4 个稳定版本

1.1.0 2021 年 7 月 9 日
1.0.2 2021 年 7 月 8 日

#2 in #ipify

27 每月下载量

自定义许可

16KB
63

Rust ipify 库

ipify 的 Rust 客户端库

GitHub license GitHub release

Generic badge Generic badge

简介

Rust ipify 是 Rust 语言编写的一个 ipify 客户端库。

为什么选择 ipify?

是否曾需要以程序方式获取您的公网 IP 地址?也许您正在配置新的云服务器,需要知道您的 IP 地址;也许您位于企业防火墙后面,需要隧道信息;无论什么原因:有时拥有一个公网 IP 地址 API 都是有用的!

您应该使用 ipify,因为

  1. 您可以无限制地使用它(即使您每分钟进行数百万次请求)。

  2. 它与 IPv4 和 IPv6 地址都完美地协同工作,因此无论您使用什么技术,都不会有问题。

  3. 它始终在线且可用,其基础设施由 Heroku 提供支持,这意味着无论运行 API 的服务器是否崩溃,或者是否有巨大的龙卷风摧毁东海岸的一半,ipify 仍然会运行!

  4. ipify 完全开源(查看 GitHub 仓库)。

  5. 绝不会记录任何访客信息。就这么简单。

  6. 最后,ipify 由 Randall Degges 赞助,因此您无需担心域名三年后消失等问题:ipify 会一直存在!

要求

该库需要 Rust 版本 >= 2018

如何编译

仓库包含 2 个文件夹。第一个文件夹 Rust_ipify_lib 包含库的源代码,第二个文件夹 Rust_ipify_lib_test 包含测试的源代码。

  • 要编译库
    • cd Rust_ipify_lib
    • cargobuild
  • 要编译测试
    • cd Rust_ipify_lib_test
    • cargobuild

如何运行

  • 要运行测试
    • cd Rust_ipify_lib_test
    • cargorun

示例

示例位于 Rust_ipify_lib_test/src/ 文件夹下。该文件包含使用库的 API 获取全局 IP 地址的示例。

extern crate rust_ipify;
use rust_ipify::ipify::get_ip_json;
use rust_ipify::ipify::get_ip_string;
use rust_ipify::ipify::get_ip4_json;
use rust_ipify::ipify::get_ip4_string;
use rust_ipify::ipify::get_ip4_i32;
use rust_ipify::ipify::get_ip_i128;

fn main() {
println!("inside main of test ");

let result_ip64_json = get_ip_json();

match result_ip64_json {
    Ok(r) => println!("Result IP ( JSON ): \n{:#?}\n", r),
    Err(e) => println!("error in request {:?}", e),
}

let result_ip64_string = get_ip_string();
match result_ip64_string {
    Ok(r) => println!("Result IP ( String ): \n\t{:#?}\n", r),
    Err(e) => println!("error in request {:?}", e),
}

let result_ip4_json = get_ip4_json();

match result_ip4_json {
    Ok(r) => println!("Result IP v4 ( JSON ): \n{:#?}\n", r),
    Err(e) => println!("error in request {:?}", e),
}

let result_ip4_string = get_ip4_string();
match result_ip4_string {
    Ok(r) => println!("Result IP v4 ( String ): \n\t{:#?}\n", r),
    Err(e) => println!("error in request {:?}", e),
}

let result_ip4_i32 = get_ip4_i32();
match result_ip4_i32 {
    Ok(r) => println!("Result IP v4 ( i32 ): \n\t{:#?}\n", r),
    Err(e) => println!("error in request {:?}", e),
}

let result_ip_i128 = get_ip_i128();
match result_ip_i128 {
    Ok(r) => println!("Result IP ( i128 ): \n\t{:#?}\n", r),
    Err(e) => println!("error in request {:?}", e),
}    

如何贡献

GitHub contributors

如果您想提供支持,可以创建一个 pull request GitHub pull-requests

或报告一个 issue GitHub issues

如果您想更改代码、修复问题或实现新功能,请阅读我们的 CONTRIBUTING 指南

网站

从Crates.io网站检查最新发布版本 这里

联系方式

电子邮件: [email protected]

GitHub个人资料 浏览次数

ZigRazor's github stats

支持

要支持我,只需在项目上 Star GitHub stars关注我 GitHub followers

依赖项

~5–18MB
~269K SLoC