ripinfo/
ip_response.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Serialize, Deserialize, Clone, Debug)]
4#[serde(rename_all = "camelCase")]
5pub struct IpResponseBusiness {
6    pub input: String,
7    pub data: Option<IpData>,
8    pub error: Option<String>,
9}
10
11#[derive(Serialize, Deserialize, Clone, Debug)]
12#[serde(rename_all = "camelCase")]
13pub struct IpData {
14    pub ip: String,
15    pub city: Option<String>,
16    pub country: Option<String>,
17    pub loc: Option<String>,
18    pub bogon: Option<bool>,
19    pub readme: Option<String>,
20    pub postal: Option<String>,
21    pub timezone: Option<String>,
22    pub region: Option<String>,
23    pub hostname: Option<String>,
24    pub privacy: Option<Privacy>,
25    pub company: Option<Company>,
26    pub carrier: Option<Carrier>,
27    pub abuse: Option<Abuse>,
28    pub domains: Option<Domains>,
29}
30
31#[derive(Serialize, Deserialize, Clone, Debug)]
32#[serde(rename_all = "camelCase")]
33pub struct Company {
34    pub name: Option<String>,
35    pub domain: Option<String>,
36    #[serde(rename = "type")]
37    pub type_: Option<String>,
38}
39
40#[derive(Serialize, Deserialize, Clone, Debug)]
41#[serde(rename_all = "camelCase")]
42pub struct Carrier {
43    pub name: Option<String>,
44    pub mcc: Option<String>,
45    pub mnc: Option<String>,
46}
47
48#[derive(Serialize, Deserialize, Clone, Debug)]
49#[serde(rename_all = "camelCase")]
50pub struct Privacy {
51    pub vpn: bool,
52    pub proxy: bool,
53    pub tor: bool,
54    pub relay: bool,
55    pub hosting: bool,
56    pub service: String,
57}
58
59#[derive(Serialize, Deserialize, Clone, Debug)]
60#[serde(rename_all = "camelCase")]
61pub struct Abuse {
62    pub address: Option<String>,
63    pub country: Option<String>,
64    pub email: Option<String>,
65    pub name: Option<String>,
66    pub network: Option<String>,
67    pub phone: Option<String>,
68}
69
70#[derive(Serialize, Deserialize, Clone, Debug)]
71#[serde(rename_all = "camelCase")]
72pub struct Domains {
73    pub ip: Option<String>,
74    pub total: u16,
75    pub domains: Vec<String>,
76}