use serde_json::{json, Result, Value};
use reqwest::ClientBuilder;
use std::process;
use reqwest::header::{CONTENT_TYPE};
pub async fn send_discord(webhook_url: &str, message: &str, username: &str) -> std::result::Result<(), reqwest::Error> {
if webhook_url.contains("https://discord.com/api/webhooks/") {
let json_message = match jsonify(username, message) {
Ok(j) => j,
Err(_e) => process::exit(3)
};
push_message(webhook_url, json_message).await?;
} else {
println!("invalid discord url");
}
Ok(())
}
async fn push_message(api_url: &str, json_message: Value) -> reqwest::Result<String> {
let client = ClientBuilder::new()
.danger_accept_invalid_certs(true)
.no_gzip()
.build();
let response = match client {
Ok(r) => r
.post(api_url)
.header(CONTENT_TYPE, "application/json")
.json(&json_message)
.send().await,
Err(_e) => process::exit(3)
};
return match response {
Ok(r) => r.text().await,
Err(e) => {Err(e)}
}
}
pub fn jsonify(username: &str, message: &str) -> Result<Value> {
let data = json!({
"username": username,
"content": message,
});
Ok(data)
}