diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/github.rs | 31 | ||||
| -rw-r--r-- | src/main.rs | 19 | 
2 files changed, 15 insertions, 35 deletions
| diff --git a/src/github.rs b/src/github.rs index 58f8983..5289a0d 100644 --- a/src/github.rs +++ b/src/github.rs @@ -16,7 +16,6 @@  // along with Reflectub. If not, see <https://www.gnu.org/licenses/>. -use reqwest::ClientBuilder;  use serde::Deserialize;  use thiserror; @@ -30,11 +29,11 @@ const USER_AGENT: &'static str = concat!(  #[derive(Debug, thiserror::Error)]  pub enum Error { -    #[error("request error")] -    Http(#[from] reqwest::Error), +    #[error("GitHub request error")] +    Http(#[from] ureq::Error), -    #[error("request header error")] -    Header(#[from] reqwest::header::InvalidHeaderValue), +    #[error("GitHub I/O error")] +    Io(#[from] std::io::Error),  } @@ -61,30 +60,24 @@ impl Repo {  /// Fetch all GitHub repositories for the given user. -pub async fn fetch_repos(github_username: &str) -> Result<Vec<Repo>, Error> { -    let mut headers = reqwest::header::HeaderMap::new(); -    headers.insert("Accept", "application/vnd.github.v3+json".parse()?); - -    let client = ClientBuilder::new() +pub fn fetch_repos(github_username: &str) -> Result<Vec<Repo>, Error> { +    let agent = ureq::AgentBuilder::new()          .user_agent(USER_AGENT) -        .default_headers(headers) -        .build()?; +        .build();      let mut repos = Vec::new();      for i in 1.. { -        let repo_page = client.request( -            reqwest::Method::GET, -            format!( +        let repo_page: Vec<Repo> = agent.get( +            &format!(                  "https://api.github.com/users/{}/repos?page={}&per_page=100&sort=updated",                  github_username,                  i,              ),          ) -            .send() -            .await? -            .json::<Vec<Repo>>() -            .await?; +            .set("Accept", "application/vnd.github.v3+json") +            .call()? +            .into_json()?;          if repo_page.is_empty() {              break; diff --git a/src/main.rs b/src/main.rs index 4b36264..4e4d580 100644 --- a/src/main.rs +++ b/src/main.rs @@ -24,8 +24,6 @@ use filetime;  use getopts::Options;  use parse_size::parse_size;  use rusqlite; -use tokio; -use tokio_stream::StreamExt;  use reflectub::{database, git, github}; @@ -38,18 +36,7 @@ use std::sync::{Arc, Mutex};  fn main() { -    let rt = tokio::runtime::Builder::new_multi_thread() -        .enable_io() -        .enable_time() -        .worker_threads(4) -        .build() -        .unwrap(); -    // let rt = tokio::runtime::Runtime::new() -    let _rt_guard = rt.enter(); - -    let result = rt.block_on(run()); - -    match result { +    match run() {          Ok(_) => (),          Err(e) => {              eprint!("error"); @@ -72,7 +59,7 @@ fn print_usage(opts: &Options) {      );  } -async fn run() -> anyhow::Result<()> { +fn run() -> anyhow::Result<()> {      let args: Vec<String> = env::args().collect();      let mut opts = Options::new(); @@ -123,7 +110,7 @@ async fn run() -> anyhow::Result<()> {      let base_cgitrc = opt_matches.opt_str("cgitrc")          .map(|s| PathBuf::from(s)); -    let repos = github::fetch_repos(username).await?; +    let repos = github::fetch_repos(username)?;      let mut db = database::Db::connect(&database_file)          .context("unable to connect to database")?; | 
