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}