mirror of
https://github.com/logos-blockchain/logos-blockchain-testing.git
synced 2026-07-20 06:29:33 +00:00
41 lines
984 B
Rust
41 lines
984 B
Rust
use reqwest::Url;
|
|
use serde::Serialize;
|
|
|
|
#[derive(Clone)]
|
|
pub struct QueueHttpClient {
|
|
base_url: Url,
|
|
client: reqwest::Client,
|
|
}
|
|
|
|
impl QueueHttpClient {
|
|
#[must_use]
|
|
pub fn new(base_url: Url) -> Self {
|
|
Self {
|
|
base_url,
|
|
client: reqwest::Client::new(),
|
|
}
|
|
}
|
|
|
|
pub async fn get<T: serde::de::DeserializeOwned>(&self, path: &str) -> anyhow::Result<T> {
|
|
let url = self.base_url.join(path)?;
|
|
let response = self.client.get(url).send().await?.error_for_status()?;
|
|
Ok(response.json().await?)
|
|
}
|
|
|
|
pub async fn post<B: Serialize, T: serde::de::DeserializeOwned>(
|
|
&self,
|
|
path: &str,
|
|
body: &B,
|
|
) -> anyhow::Result<T> {
|
|
let url = self.base_url.join(path)?;
|
|
let response = self
|
|
.client
|
|
.post(url)
|
|
.json(body)
|
|
.send()
|
|
.await?
|
|
.error_for_status()?;
|
|
Ok(response.json().await?)
|
|
}
|
|
}
|