break out module
This commit is contained in:
		@@ -3,40 +3,14 @@
 | 
				
			|||||||
use anyhow::{Context, Result};
 | 
					use anyhow::{Context, Result};
 | 
				
			||||||
use log::{error, info};
 | 
					use log::{error, info};
 | 
				
			||||||
use reqwest::Client;
 | 
					use reqwest::Client;
 | 
				
			||||||
use serde::{self, Deserialize, Serialize};
 | 
					 | 
				
			||||||
use std::{
 | 
					use std::{
 | 
				
			||||||
    collections::HashMap,
 | 
					 | 
				
			||||||
    fmt,
 | 
					    fmt,
 | 
				
			||||||
    net::{IpAddr, Ipv4Addr},
 | 
					    net::{IpAddr, Ipv4Addr},
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use super::cloudflare_responses::{CloudflareResponse, DnsRecord};
 | 
				
			||||||
use crate::get_current_public_ipv4;
 | 
					use crate::get_current_public_ipv4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive(Serialize, Deserialize, Clone, Debug)]
 | 
					 | 
				
			||||||
struct DnsRecord {
 | 
					 | 
				
			||||||
    id: Box<str>,
 | 
					 | 
				
			||||||
    #[serde(rename = "type")]
 | 
					 | 
				
			||||||
    record_type: Box<str>,
 | 
					 | 
				
			||||||
    name: Box<str>,
 | 
					 | 
				
			||||||
    content: Box<str>,
 | 
					 | 
				
			||||||
    ttl: u32,
 | 
					 | 
				
			||||||
    proxied: bool,
 | 
					 | 
				
			||||||
    locked: bool,
 | 
					 | 
				
			||||||
    zone_id: Box<str>,
 | 
					 | 
				
			||||||
    zone_name: Box<str>,
 | 
					 | 
				
			||||||
    modified_on: Box<str>,
 | 
					 | 
				
			||||||
    created_on: Box<str>,
 | 
					 | 
				
			||||||
    meta: HashMap<Box<str>, serde_json::Value>,
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#[derive(Serialize, Deserialize, Debug)]
 | 
					 | 
				
			||||||
struct CloudflareResponse {
 | 
					 | 
				
			||||||
    success: bool,
 | 
					 | 
				
			||||||
    errors: Box<[HashMap<Box<str>, serde_json::Value>]>,
 | 
					 | 
				
			||||||
    messages: Box<[HashMap<Box<str>, serde_json::Value>]>,
 | 
					 | 
				
			||||||
    result: Option<Vec<DnsRecord>>,
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pub struct CloudflareClient<A, Z>
 | 
					pub struct CloudflareClient<A, Z>
 | 
				
			||||||
where
 | 
					where
 | 
				
			||||||
    A: fmt::Display,
 | 
					    A: fmt::Display,
 | 
				
			||||||
							
								
								
									
										27
									
								
								src/internet/cloudflare_responses.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								src/internet/cloudflare_responses.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					use std::collections::HashMap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use serde;
 | 
				
			||||||
 | 
					#[derive(serde::Serialize, serde::Deserialize, Clone, Debug)]
 | 
				
			||||||
 | 
					pub struct DnsRecord {
 | 
				
			||||||
 | 
					    pub id: Box<str>,
 | 
				
			||||||
 | 
					    #[serde(rename = "type")]
 | 
				
			||||||
 | 
					    pub record_type: Box<str>,
 | 
				
			||||||
 | 
					    pub name: Box<str>,
 | 
				
			||||||
 | 
					    pub content: Box<str>,
 | 
				
			||||||
 | 
					    pub ttl: u32,
 | 
				
			||||||
 | 
					    pub proxied: bool,
 | 
				
			||||||
 | 
					    pub locked: bool,
 | 
				
			||||||
 | 
					    pub zone_id: Box<str>,
 | 
				
			||||||
 | 
					    pub zone_name: Box<str>,
 | 
				
			||||||
 | 
					    pub modified_on: Box<str>,
 | 
				
			||||||
 | 
					    pub created_on: Box<str>,
 | 
				
			||||||
 | 
					    pub meta: HashMap<Box<str>, serde_json::Value>,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[derive(serde::Serialize, serde::Deserialize, Debug)]
 | 
				
			||||||
 | 
					pub struct CloudflareResponse {
 | 
				
			||||||
 | 
					    pub success: bool,
 | 
				
			||||||
 | 
					    pub errors: Box<[HashMap<Box<str>, serde_json::Value>]>,
 | 
				
			||||||
 | 
					    pub messages: Box<[HashMap<Box<str>, serde_json::Value>]>,
 | 
				
			||||||
 | 
					    pub result: Option<Vec<DnsRecord>>,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										3
									
								
								src/internet/mod.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/internet/mod.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					mod cloudflare;
 | 
				
			||||||
 | 
					pub mod cloudflare_responses;
 | 
				
			||||||
 | 
					pub use cloudflare::CloudflareClient;
 | 
				
			||||||
@@ -1,16 +1,17 @@
 | 
				
			|||||||
// SPDX: BSD-2-Clause
 | 
					// SPDX: BSD-2-Clause
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mod cloudflare;
 | 
					 | 
				
			||||||
mod config;
 | 
					mod config;
 | 
				
			||||||
mod exit_listener;
 | 
					mod exit_listener;
 | 
				
			||||||
mod logging;
 | 
					mod logging;
 | 
				
			||||||
mod message_handler;
 | 
					mod message_handler;
 | 
				
			||||||
mod network_change_listener;
 | 
					mod network_change_listener;
 | 
				
			||||||
mod public_ip;
 | 
					mod public_ip;
 | 
				
			||||||
mod tests;
 | 
					 | 
				
			||||||
pub mod utils;
 | 
					pub mod utils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub use cloudflare::CloudflareClient;
 | 
					mod tests;
 | 
				
			||||||
 | 
					mod internet;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub use internet::CloudflareClient;
 | 
				
			||||||
pub use config::{get_config_path, read_config, Config};
 | 
					pub use config::{get_config_path, read_config, Config};
 | 
				
			||||||
pub use exit_listener::ExitListener;
 | 
					pub use exit_listener::ExitListener;
 | 
				
			||||||
pub use logging::init_logger;
 | 
					pub use logging::init_logger;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user