diff options
Diffstat (limited to 'crates/bot-http')
| -rw-r--r-- | crates/bot-http/Cargo.toml | 26 | ||||
| -rw-r--r-- | crates/bot-http/src/github.rs | 35 | ||||
| -rw-r--r-- | crates/bot-http/src/lib.rs | 63 | ||||
| -rw-r--r-- | crates/bot-http/src/model.rs | 13 | ||||
| -rw-r--r-- | crates/bot-http/src/teawie.rs | 24 |
5 files changed, 0 insertions, 161 deletions
diff --git a/crates/bot-http/Cargo.toml b/crates/bot-http/Cargo.toml deleted file mode 100644 index 0888fda..0000000 --- a/crates/bot-http/Cargo.toml +++ /dev/null @@ -1,26 +0,0 @@ -[package] -name = "bot-http" -version = "0.2.0" -edition = "2021" - -authors = ["seth <getchoo at tuta dot io>"] -description = "HTTP client for nixpkgs-tracker-bot" -repository = "https://github.com/getchoo/nixpkgs-tracker-bot" - -publish = false - -[dependencies] -log = { workspace = true } -reqwest = { version = "0.12.5", default-features = false, features = ["charset", "http2", "rustls-tls", "json"] } -serde = { version = "1.0.207", features = ["derive"] } - -[lints.rust] -unsafe_code = "forbid" - -[lints.clippy] -complexity = "warn" -correctness = "deny" -pedantic = "warn" -perf = "warn" -style = "warn" -suspicious = "deny" diff --git a/crates/bot-http/src/github.rs b/crates/bot-http/src/github.rs deleted file mode 100644 index 7822eb8..0000000 --- a/crates/bot-http/src/github.rs +++ /dev/null @@ -1,35 +0,0 @@ -use super::{ClientExt as _, Error}; -use crate::model::PullRequest; - -use std::future::Future; - -const GITHUB_API: &str = "https://api.github.com"; - -pub trait ClientExt { - /// Get the commit that merged [`pr`] in [`repo_owner`]/[`repo_name`] - /// - /// # Errors - /// - /// Will return [`Err`] if the merge commit cannot be found - fn merge_commit_for( - &self, - repo_owner: &str, - repo_name: &str, - pr: u64, - ) -> impl Future<Output = Result<Option<String>, Error>> + Send; -} - -impl ClientExt for super::Client { - async fn merge_commit_for( - &self, - repo_owner: &str, - repo_name: &str, - pr: u64, - ) -> Result<Option<String>, Error> { - let url = format!("{GITHUB_API}/repos/{repo_owner}/{repo_name}/pulls/{pr}"); - let resp: PullRequest = self.get_json(&url).await?; - let merge_commit = resp.merge_commit_sha; - - Ok(merge_commit) - } -} diff --git a/crates/bot-http/src/lib.rs b/crates/bot-http/src/lib.rs deleted file mode 100644 index ab32cd4..0000000 --- a/crates/bot-http/src/lib.rs +++ /dev/null @@ -1,63 +0,0 @@ -use std::future::Future; - -use log::trace; -use serde::de::DeserializeOwned; - -mod github; -mod model; -mod teawie; - -pub use github::ClientExt as GithubClientExt; -pub use teawie::ClientExt as TeawieClientExt; - -pub type Client = reqwest::Client; -pub type Response = reqwest::Response; -pub type Error = reqwest::Error; - -/// Fun trait for functions we use with [Client] -pub trait ClientExt { - fn default() -> Self; - fn get_request(&self, url: &str) -> impl Future<Output = Result<Response, Error>> + Send; - fn get_json<T: DeserializeOwned>( - &self, - url: &str, - ) -> impl Future<Output = Result<T, Error>> + Send; -} - -impl ClientExt for Client { - /// Create the default [`Client`] - fn default() -> Self { - reqwest::Client::builder() - .user_agent(format!( - "nixpkgs-tracker-bot/{}", - option_env!("CARGO_PKG_VERSION").unwrap_or_else(|| "development") - )) - .build() - .unwrap() - } - - /// Perform a GET request to [`url`] - /// - /// # Errors - /// - /// Will return [`Err`] if the request fails - async fn get_request(&self, url: &str) -> Result<Response, Error> { - trace!("Making GET request to {url}"); - - let resp = self.get(url).send().await?; - resp.error_for_status_ref()?; - - Ok(resp) - } - - /// Perform a GET request to [`url`] and decode the json response - /// - /// # Errors - /// - /// Will return [`Err`] if the request fails or cannot be deserialized - async fn get_json<T: DeserializeOwned>(&self, url: &str) -> Result<T, Error> { - let resp = self.get_request(url).await?; - let json = resp.json().await?; - Ok(json) - } -} diff --git a/crates/bot-http/src/model.rs b/crates/bot-http/src/model.rs deleted file mode 100644 index afd4717..0000000 --- a/crates/bot-http/src/model.rs +++ /dev/null @@ -1,13 +0,0 @@ -use serde::Deserialize; - -/// Bad version of `/repos/{owner}/{repo}/pulls/{pull_number}` for Github's api -#[derive(Clone, Debug, Deserialize)] -pub struct PullRequest { - pub merge_commit_sha: Option<String>, -} - -/// `/random_teawie` for the teawieAPI -#[derive(Clone, Debug, Deserialize)] -pub struct RandomTeawie { - pub url: Option<String>, -} diff --git a/crates/bot-http/src/teawie.rs b/crates/bot-http/src/teawie.rs deleted file mode 100644 index ea4f53e..0000000 --- a/crates/bot-http/src/teawie.rs +++ /dev/null @@ -1,24 +0,0 @@ -use super::{ClientExt as _, Error}; -use crate::model::RandomTeawie; - -use std::future::Future; - -const TEAWIE_API: &str = "https://api.getchoo.com"; - -pub trait ClientExt { - /// Get a random teawie - /// - /// # Errors - /// - /// Will return [`Err`] if the request fails or the response cannot be deserialized - fn random_teawie(&self) -> impl Future<Output = Result<Option<String>, Error>> + Send; -} - -impl ClientExt for super::Client { - async fn random_teawie(&self) -> Result<Option<String>, Error> { - let url = format!("{TEAWIE_API}/random_teawie"); - let resp: RandomTeawie = self.get_json(&url).await?; - - Ok(resp.url) - } -} |
