8 个版本

0.6.2 2023年8月2日
0.6.1 2022年10月23日
0.6.0 2022年5月13日
0.5.2 2022年4月28日
0.3.1 2021年11月7日

#2087 in 命令行工具

MIT 许可证

23KB
193

ipify-rs

Rust API & CLI 用于访问 ipify.org HTTP API

Cirrus-CI Crates.io Docs GitHub release GitHub issues SemVer License dependency status

MIT 许可下。

  1. 关于
  2. API 使用
  3. 安装
  4. 示例
  5. 文档
  6. 贡献

关于

这是我尝试为 IPIFY API(即 ipify.org)编写 API & CLI 客户端的尝试。在查看所有其他 crate 后,它们都有一些缺陷(只有 IPv4,不真正符合 cargo 规范等)。

支持的平台

  • Unix(已在 FreeBSD、Linux 和 macOS 上测试)
  • Windows
    • cmd.exe
    • Powershell

API 使用

您首先使用 new() 创建 Ipify 的实例,设置您想要的结果(IPv4、IPv6)和其格式(纯文本、JSON)。结果是一个字符串。

  use ipify_rs::{Ipify,Op};
  
  let ip = Ipify::new().set(Op::IPv4).call();
  
  println!("My IP is {}", ip);

以下指定了四种操作

  • 操作::IPv4
  • OP::IPv6(默认值)
  • OP::IPv4J(JSON 输出)
  • Op::IPv6J(JSON 输出)

简洁的 API

如果您只关心默认值(纯文本、IPv6 查询)并且不想以后重用任何内容,那么 myip() 就是您想要的

use ipify_rs::myip;

fn main() {
    println!("{}", myip());
}

CLI 工具

API 中包含了一个名为 ipify-cli 的 CLI 工具。

    ipify-cli 0.4.0
    
    Ollivier Robert <roberto@keltia.net>
    
    Rust CLI for IPIFY API.
    
    USAGE:
        ipify-cli.exe [OPTIONS]
    
    OPTIONS:
        -4, --ipv4       Force getting IPv4
        -6, --ipv6       Force getting IPv6
        -h, --help       Print help information
        -J, --json       Request JSON output
        -q, --quiet      Quiet mode
        -V, --version    Display version and exit

您可以看到 API 和 CLI 版本

    $ ipify-cli -V
CLI ipify-cli/0.4.0 using API ipify-rs/0.5.0

示例

examples 目录中的 showall.rs 文件显示了 API 几乎所有的参数。您可以使用以下命令运行它:

    $ cargo run --example showall
    ...   
    INFO - Start
    INFO - Using default, minimal API
    IP=aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh
    INFO - Using defaults (ipv6)
    IP=aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh
    INFO - Using defaults, get json
    IP={"ip":"aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh"}
    IP4="A.B.C.D"
    IP6="aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh"

crates.io

您可以通过将以下内容添加到您的 Cargo.toml 来在项目中使用此包

[dependencies]
ipify-rs = "0.5.0"

然后您可以在自己的 crates 中使用它。

文档

API 的完整描述和示例在 docs.rs 上,与往常一样:[Ipify](https://docs.rs/ipify-rs)。

贡献

请参阅 CONTRIBUTING.md 以获取一些简单规则。

我为这个包使用 Git Flow,因此请使用类似的工作流程或常见的 GitHub 工作流程。

  1. 进行分叉(https://github.com/keltia/dmarc-rs/fork
  2. 检出 develop 分支(git checkout develop
  3. 创建您的功能分支(git checkout -b my-new-feature
  4. 提交您的更改(git commit -am 'Add some feature'
  5. 推送到分支(git push origin my-new-feature
  6. 创建一个新的 Pull Request

依赖项

~11–25MB
~407K SLoC