9个版本

0.0.16 2024年3月15日
0.0.15 2023年12月18日
0.0.14 2023年11月26日
0.0.13 2023年8月7日
0.0.9 2023年6月24日

#597网络编程

每月37次下载
3 crate 中使用

MIT/Apache

280KB
7K SLoC

ICANN RDAP Common

这是由互联网名称与数字地址分配机构(ICANN)编写和资助的通用组件库,用于注册数据访问协议(RDAP)。RDAP是IETF的标准,RDAP的扩展是IETF REGEXT工作组当前的工作活动。关于ICANN在RDAP中的作用,更多信息可以在这里找到。

安装

将库添加到Cargo.toml文件: cargo add icann-rdap-common.

此库可以编译为WASM目标。

用法

创建一些RDAP对象

// create an entity
use icann_rdap_common::response::entity::Entity;
let holder = Entity::basic().handle("foo-BAR").build();

// create an RDAP domain
use icann_rdap_common::response::domain::Domain;
let domain = Domain::basic().ldh_name("example.com").entity(holder.clone()).build();

// create an IP network
use icann_rdap_common::response::network::Network;
let net = Network::basic().cidr("10.0.0.0/16").entity(holder.clone()).build().unwrap();

// create a nameserver
use icann_rdap_common::response::nameserver::Nameserver;
let ns = Nameserver::basic().ldh_name("ns1.example.com").entity(holder.clone()).build().unwrap();

// create an autnum
use icann_rdap_common::response::autnum::Autnum;
let autnum = Autnum::basic().autnum_range(700..700).entity(holder).build();

解析RDAP JSON

use icann_rdap_common::response::RdapResponse;

let json = r#"
  {
    "objectClassName": "ip network",
    "links": [
      {
        "value": "https://127.0.0.1:3000/rdap/ip/10.0.0.0/16",
        "rel": "self",
        "href": "https://127.0.0.1:3000/rdap/ip/10.0.0.0/16",
        "type": "application/rdap+json"
      }
    ],
    "events": [
      {
        "eventAction": "registration",
        "eventDate": "2023-06-16T22:56:49.594173356+00:00"
      },
      {
        "eventAction": "last changed",
        "eventDate": "2023-06-16T22:56:49.594189140+00:00"
      }
    ],
    "startAddress": "10.0.0.0",
    "endAddress": "10.0.255.255",
    "ipVersion": "v4"
  }
"#;

let rdap: RdapResponse = serde_json::from_str(json).unwrap();
assert!(matches!(rdap, RdapResponse::Network(_)));

许可

许可协议为以下之一

贡献

除非你明确声明,否则根据Apache-2.0许可证定义的任何贡献,有意提交给工作以包含在内的,根据Apache-2.0许可证定义,将根据ICANN的选择,根据Apache许可证第2版或上述MIT许可证进行双许可,不附加任何额外条款或条件。

依赖

~6–23MB
~348K SLoC