From d052c1a9d3f06c32c92d9d36b0baa4cbb4d9c2c3 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Tue, 28 Jul 2020 22:20:36 +0200 Subject: Move `Client` to a new module --- src/lib.rs | 73 ++------------------------------------------------------------ 1 file changed, 2 insertions(+), 71 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index 4a15852..c082736 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,80 +1,11 @@ #![warn(rust_2018_idioms)] +pub mod client; pub mod suggestion; mod url; +pub use crate::client::Client; pub use crate::suggestion::Suggestion; pub use crate::url::SuggestionUrl; - - -use github_rs::client::{Executor, Github}; -use serde_json::Value; -use thiserror::Error; - - -#[derive(Debug, Error)] -pub enum Error { - #[error("GitHub client error: {0}")] - Github(String), - - #[error("Unable to deserialize")] - Deserialize(#[from] serde_json::error::Error), -} - - -pub struct Client<'a> { - client: Github, - owner: &'a str, - repo: &'a str, -} - -impl<'a> Client<'a> { - pub fn new(token: &str, owner: &'a str, repo: &'a str) -> Self { - let client = Github::new(&token).unwrap(); - - Client { client, owner, repo } - } - - pub fn fetch(&self, id: &str) -> Result { - let response = self.client - .get() - .repos() - .owner(self.owner) - .repo(self.repo) - .pulls() - .comments() - .id(id) - .execute::(); - - match response { - Ok((_, _, Some(json))) => { - let suggestion = serde_json::from_value(json)?; - - Ok(suggestion) - }, - Ok((_, _, None)) => Err(Error::Github("no response".to_owned())), - Err(e) => Err(Error::Github(e.to_string())), - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - #[ignore] - fn suggestion_fetch_gets_pull_request_comment() { - let client = Client::new( - env!("GITHUB_TOKEN"), - "cli", - "cli", - ); - - let suggestion = client.fetch("438947607").unwrap(); - - println!("{:?}", suggestion); - } -} -- cgit v1.2.3