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/url.rs | 52 ---------------------------------------------------- 1 file changed, 52 deletions(-) delete mode 100644 src/url.rs (limited to 'src/url.rs') diff --git a/src/url.rs b/src/url.rs deleted file mode 100644 index 60a3d0e..0000000 --- a/src/url.rs +++ /dev/null @@ -1,52 +0,0 @@ -use std::str::FromStr; - -use thiserror::Error; - -use url; -use url::Url; - - -#[derive(Debug, Error)] -pub enum Error { - #[error("Unable to parse URL")] - Url(#[from] url::ParseError), - - #[error("URL has no path")] - NoPath, - - #[error("URL has no fragment")] - NoFragment, - - #[error("Unable to parse owner or repo")] - NoOwnerRepo, -} - -#[derive(Debug)] -pub struct SuggestionUrl { - pub owner: String, - pub repo: String, - pub comment_id: String, -} - -impl FromStr for SuggestionUrl { - type Err = Error; - - fn from_str(s: &str) -> Result { - let url = Url::parse(s)?; - let path = url.path_segments() - .ok_or(Error::NoPath)? - .collect::>(); - - if path.len() < 2 { - return Err(Error::NoOwnerRepo); - } - - Ok(SuggestionUrl { - owner: path[0].to_owned(), - repo: path[1].to_owned(), - comment_id: url.fragment() - .ok_or(Error::NoFragment)? - .replacen("discussion_r", "", 1), - }) - } -} -- cgit v1.2.3