1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
use serde::Serialize; use serenity::model::id::{GuildId, UserId}; use crate::Discodo; pub struct Http; impl Http { pub async fn get( Discodo { client_data: _, config, }: &Discodo, router: &str, user_id: Option<UserId>, guild_id: Option<GuildId>, ) -> String { let client = reqwest::Client::new(); let request = client.get(format!("{}{}", config.http_uri, router)); let responsebuilder = request.header("Authorization", config.password.clone()); let headers = if user_id.is_some() { responsebuilder.header("User-ID", user_id.unwrap().0) } else if guild_id.is_some() { responsebuilder.header("Guild-ID", guild_id.unwrap().0) } else { responsebuilder }; let response = headers.send().await.unwrap(); if response.status() == 403 { panic!("Password mismatch.") } else if response.status() == 404 { panic!("Error: {}", response.text().await.unwrap()) } return response.text().await.unwrap(); } pub async fn post<T>( Discodo { client_data: _, config, }: &Discodo, router: &str, user_id: Option<UserId>, guild_id: Option<GuildId>, json: Option<&T>, ) -> reqwest::Response where T: Serialize + ?Sized, { let client = reqwest::Client::new(); let request = client.post(format!("{}{}", config.http_uri, router)); let responsebuilder = request.header("Authorization", config.password.clone()); let headers = if user_id.is_some() { responsebuilder.header("User-ID", user_id.unwrap().0) } else if guild_id.is_some() { responsebuilder.header("Guild-ID", guild_id.unwrap().0) } else { panic!("NEED HEADER"); }; let response = if json.is_some() { headers.json(json.unwrap()).send().await.unwrap() } else { headers.send().await.unwrap() }; if response.status() == 403 { panic!("Password mismatch.") } else if response.status() == 404 { panic!("Error: {}", response.text().await.unwrap()) } return response; } }