mirror of
https://github.com/SeriousBug/gandi-live-dns-rust
synced 2024-12-26 15:19:59 -06:00
successfully made a request!
This commit is contained in:
parent
cfe229234e
commit
cab2ecbdf1
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1 +1,2 @@
|
|||
/target
|
||||
secret.toml
|
||||
|
|
91
Cargo.lock
generated
91
Cargo.lock
generated
|
@ -202,6 +202,7 @@ dependencies = [
|
|||
"reqwest",
|
||||
"serde",
|
||||
"structopt",
|
||||
"tokio",
|
||||
"toml",
|
||||
]
|
||||
|
||||
|
@ -351,6 +352,15 @@ dependencies = [
|
|||
"hashbrown",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "instant"
|
||||
version = "0.1.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ipnet"
|
||||
version = "2.3.1"
|
||||
|
@ -384,6 +394,15 @@ version = "0.2.109"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f98a04dce437184842841303488f70d0188c5f51437d2a834dc097eafa909a01"
|
||||
|
||||
[[package]]
|
||||
name = "lock_api"
|
||||
version = "0.4.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "712a4d093c9976e24e7dbca41db895dabcbac38eb5f4045393d17a95bdfb1109"
|
||||
dependencies = [
|
||||
"scopeguard",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.14"
|
||||
|
@ -460,6 +479,16 @@ dependencies = [
|
|||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num_cpus"
|
||||
version = "1.13.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
|
||||
dependencies = [
|
||||
"hermit-abi",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.8.0"
|
||||
|
@ -499,6 +528,31 @@ dependencies = [
|
|||
"vcpkg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot"
|
||||
version = "0.11.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
|
||||
dependencies = [
|
||||
"instant",
|
||||
"lock_api",
|
||||
"parking_lot_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot_core"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"instant",
|
||||
"libc",
|
||||
"redox_syscall",
|
||||
"smallvec",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "percent-encoding"
|
||||
version = "2.1.0"
|
||||
|
@ -690,6 +744,12 @@ dependencies = [
|
|||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "scopeguard"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
|
||||
|
||||
[[package]]
|
||||
name = "security-framework"
|
||||
version = "2.4.2"
|
||||
|
@ -756,12 +816,27 @@ dependencies = [
|
|||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "signal-hook-registry"
|
||||
version = "1.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "slab"
|
||||
version = "0.4.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5"
|
||||
|
||||
[[package]]
|
||||
name = "smallvec"
|
||||
version = "1.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309"
|
||||
|
||||
[[package]]
|
||||
name = "socket2"
|
||||
version = "0.4.2"
|
||||
|
@ -862,10 +937,26 @@ dependencies = [
|
|||
"libc",
|
||||
"memchr",
|
||||
"mio",
|
||||
"num_cpus",
|
||||
"once_cell",
|
||||
"parking_lot",
|
||||
"pin-project-lite",
|
||||
"signal-hook-registry",
|
||||
"tokio-macros",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-macros"
|
||||
version = "1.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c9efc1aba077437943f7515666aa2b882dfabfbfdf89c819ea75a8d6e9eaba5e"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-native-tls"
|
||||
version = "0.3.0"
|
||||
|
|
|
@ -7,8 +7,9 @@ edition = "2021"
|
|||
|
||||
[dependencies]
|
||||
|
||||
reqwest = "0.11.7"
|
||||
reqwest = { version = "0.11.7", features = ["json"] }
|
||||
toml = "0.5.8"
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
directories = "4.0.1"
|
||||
structopt = "0.3.25"
|
||||
tokio = { version = "1.14.0", features = ["full"] }
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
fqdn = "remote.kaangenc.me"
|
2
example.toml
Normal file
2
example.toml
Normal file
|
@ -0,0 +1,2 @@
|
|||
fqdn = "my-website.example.com"
|
||||
api_key = "xxxxxxxxxxxxxxxxxxxxxxxx"
|
|
@ -7,7 +7,8 @@ use crate::opts;
|
|||
|
||||
#[derive(Deserialize, Debug)]
|
||||
pub struct Config {
|
||||
fqdn: String,
|
||||
pub fqdn: String,
|
||||
pub api_key: String,
|
||||
}
|
||||
|
||||
pub fn load_config(file: PathBuf) -> Result<Config, Box<dyn Error>> {
|
||||
|
|
38
src/main.rs
38
src/main.rs
|
@ -1,21 +1,41 @@
|
|||
use structopt::StructOpt;
|
||||
use reqwest::{header, Client, ClientBuilder};
|
||||
use std::error::Error;
|
||||
mod opts;
|
||||
use structopt::StructOpt;
|
||||
use tokio;
|
||||
mod config;
|
||||
|
||||
mod opts;
|
||||
|
||||
fn gandi_api(fqdn: &str) -> String {
|
||||
return format!("https://api.gandi.net/v5/livedns/domains/{}/records", fqdn);
|
||||
}
|
||||
|
||||
fn main() -> Result<(), Box<dyn Error>> {
|
||||
fn api_client(api_key: &str) -> Result<Client, Box<dyn Error>> {
|
||||
let client_builder = ClientBuilder::new();
|
||||
|
||||
let key = format!("Apikey {}", api_key);
|
||||
let mut auth_value = header::HeaderValue::from_str(&key)?;
|
||||
let mut headers = header::HeaderMap::new();
|
||||
auth_value.set_sensitive(true);
|
||||
headers.insert(header::AUTHORIZATION, auth_value);
|
||||
let accept_value = header::HeaderValue::from_static("application/json");
|
||||
headers.insert(header::ACCEPT, accept_value);
|
||||
let client = client_builder.default_headers(headers).build()?;
|
||||
return Ok(client);
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), Box<dyn Error>> {
|
||||
let opts = opts::Opts::from_args();
|
||||
println!("{:#?}", opts);
|
||||
let conf_path = config::config_path(&opts);
|
||||
println!("{:#?}", conf_path);
|
||||
let conf = config::load_config(conf_path);
|
||||
println!("{:#?}", conf);
|
||||
println!("Hello, world!");
|
||||
println!("Loading config from {:#?}", conf_path);
|
||||
let conf = config::load_config(conf_path)?;
|
||||
println!("Checking domain {:#?}", conf.fqdn);
|
||||
let url = gandi_api(&conf.fqdn);
|
||||
let client = api_client(&conf.api_key)?;
|
||||
|
||||
let out = client.get(url).send().await?;
|
||||
println!("Output: {:#?}", out);
|
||||
println!("Output: {:#?}", out.json().await?);
|
||||
|
||||
return Ok(());
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue