From fdc1cc7bc3d237ef4976f9f9d2ffc09b7ba164d5 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sat, 1 Aug 2020 15:32:17 +0200 Subject: Move library to a separate crate Keep the binaries in the root crate, and add a new crate for the `github-suggestion` library. I want to add some library code to the CLI programs to extract common functionality between the different binaries. --- src/client.rs | 58 ---------------------------------------------------------- 1 file changed, 58 deletions(-) delete mode 100644 src/client.rs (limited to 'src/client.rs') diff --git a/src/client.rs b/src/client.rs deleted file mode 100644 index c6ae1f1..0000000 --- a/src/client.rs +++ /dev/null @@ -1,58 +0,0 @@ -use github_rs::client::{Executor, Github}; -use serde_json::Value; -use thiserror::Error; - -use crate::suggestion::Suggestion; - - -#[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, - ) -> Result { - let client = match Github::new(&token) { - Ok(g) => g, - Err(e) => return Err(Error::Github(e.to_string())), - }; - - Ok(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())), - } - } -} -- cgit v1.2.3