Well we got an http client builder lol
This commit is contained in:
parent
a9e8f2e9cf
commit
851c68267e
4 changed files with 22 additions and 18 deletions
|
@ -3,7 +3,7 @@
|
|||
// TODO: handle messages
|
||||
// TODO: data persistence? (sqlite? sled?)
|
||||
|
||||
use std::{any::Any, fmt, future};
|
||||
use std::{any::Any, future};
|
||||
|
||||
use discord::model::{ChannelId, Event, Message, ReadyEvent};
|
||||
use tokio::sync::Mutex;
|
||||
|
|
|
@ -30,10 +30,6 @@ pub struct Config {
|
|||
pub open_ai: Option<OpenAI>,
|
||||
}
|
||||
|
||||
pub struct ConfigLoadResult {
|
||||
pub config: Config,
|
||||
}
|
||||
|
||||
const CONFIG_FILE_PATH: &str = "./conf.toml";
|
||||
const ENCRYPTED_CONFIG_FILE_PATH: &str = "./conf.toml.sops";
|
||||
const TMP_CONFIG_FILE_NAME: &str = "yourcloud-conf.toml";
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#![allow(dead_code)]
|
||||
|
||||
use crate::prelude::*;
|
||||
use http_client::{Client, HeaderMap, HeaderValue, Url};
|
||||
use http_client::{Client, Url};
|
||||
use serde_with::skip_serializing_none;
|
||||
|
||||
use std::collections::HashMap;
|
||||
|
@ -92,12 +94,7 @@ pub struct ServerStatus {
|
|||
|
||||
impl MinecraftServerStatus {
|
||||
pub fn try_new() -> Result<Self> {
|
||||
let mut headers = HeaderMap::new();
|
||||
headers.insert("content-type", HeaderValue::from_str("application/json")?);
|
||||
headers.insert("accepts", HeaderValue::from_str("application/json")?);
|
||||
|
||||
let client = Client::named("http_client@api.mcsrvstat.us")
|
||||
.with_default_headers(headers)
|
||||
let client = Client::builder()
|
||||
.with_url(Url::parse("https://api.mcsrvstat.us/3")?)
|
||||
.build()?;
|
||||
|
||||
|
|
|
@ -76,6 +76,10 @@ impl Builder {
|
|||
builder = builder.default_headers(headers);
|
||||
}
|
||||
|
||||
if let Some(ref mut base_url) = self.base_url {
|
||||
base_url.set_path(&format!("{}{}", base_url.path().trim_end_matches('/'), "/"));
|
||||
}
|
||||
|
||||
let mut middleware_builder = reqwest_middleware::ClientBuilder::new(builder.build()?);
|
||||
|
||||
if let Some(middleware) = self.middleware {
|
||||
|
@ -84,17 +88,18 @@ impl Builder {
|
|||
}
|
||||
}
|
||||
|
||||
if let Some(otel_name) = self.name {
|
||||
if let Some(otel_name) = self.name.or_else(|| {
|
||||
self.base_url
|
||||
.as_ref()
|
||||
.map(|u| u.host_str().map(|h| format!("http_client@{}", h)))
|
||||
.flatten()
|
||||
}) {
|
||||
middleware_builder =
|
||||
middleware_builder.with_init(Extension(OtelName(otel_name.into())));
|
||||
}
|
||||
|
||||
let client = middleware_builder.build();
|
||||
|
||||
if let Some(ref mut base_url) = self.base_url {
|
||||
base_url.set_path(&format!("{}{}", base_url.path().trim_end_matches('/'), "/"));
|
||||
}
|
||||
|
||||
Ok(Client {
|
||||
client,
|
||||
base_url: self.base_url,
|
||||
|
@ -184,7 +189,13 @@ impl Client {
|
|||
|
||||
#[instrument]
|
||||
pub async fn get_json<T: DeserializeOwned>(&self, rel_url_path: &str) -> Result<T> {
|
||||
Ok(self.get(rel_url_path).await?.json().await?)
|
||||
Ok(self
|
||||
.build_request(Method::GET, rel_url_path)?
|
||||
.header("accepts", "application/json")
|
||||
.send()
|
||||
.await?
|
||||
.json()
|
||||
.await?)
|
||||
}
|
||||
|
||||
// this is a lib, so add new stuff sparingly!
|
||||
|
|
Loading…
Reference in a new issue