From b2525b5ac5278185d2384102ebc1655ccec1d10c Mon Sep 17 00:00:00 2001 From: Laurent Arnoud Date: Sun, 8 Mar 2020 12:27:59 +0100 Subject: [PATCH] Implement std::error::Error and rename to Error --- src/http/reqwest/async_reqwest.rs | 15 ++++++++------- src/http/reqwest/sync_reqwest.rs | 10 +++++----- src/model.rs | 2 +- src/model/errors.rs | 6 ++++-- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/http/reqwest/async_reqwest.rs b/src/http/reqwest/async_reqwest.rs index 24e5b6bf6..288d119cc 100644 --- a/src/http/reqwest/async_reqwest.rs +++ b/src/http/reqwest/async_reqwest.rs @@ -1,25 +1,26 @@ use reqwest::{Client, Request}; -use reqwest::{Method, Error}; +use reqwest::Method; +use reqwest::Error as ReqwestError; use reqwest::header::HeaderValue; use url::{Origin, Url}; use reqwest::header::USER_AGENT; use crate::http::{RobotsTxtClient, DEFAULT_USER_AGENT}; use crate::parser::{ParseResult, parse_fetched_robots_txt}; use crate::model::FetchedRobotsTxt; -use crate::model::{RobotparserError, ErrorKind}; +use crate::model::{Error, ErrorKind}; use std::pin::Pin; use futures::task::{Context, Poll}; use futures::Future; use futures::future::TryFutureExt; use futures::future::ok as future_ok; -type FetchFuture = Box>>; +type FetchFuture = Box>>; impl RobotsTxtClient for Client { - type Result = Result; + type Result = Result; fn fetch_robots_txt(&self, origin: Origin) -> Self::Result { let url = format!("{}/robots.txt", origin.unicode_serialization()); - let url = Url::parse(&url).map_err(|err| RobotparserError {kind: ErrorKind::Url(err)})?; + let url = Url::parse(&url).map_err(|err| Error {kind: ErrorKind::Url(err)})?; let mut request = Request::new(Method::GET, url); let _ = request.headers_mut().insert(USER_AGENT, HeaderValue::from_static(DEFAULT_USER_AGENT)); let response = self @@ -30,7 +31,7 @@ impl RobotsTxtClient for Client { return future_ok((response_info, response_text)); }); }); - let response: Pin>>> = Box::pin(response); + let response: Pin>>> = Box::pin(response); Ok(RobotsTxtResponse { origin, response, @@ -56,7 +57,7 @@ impl RobotsTxtResponse { } impl Future for RobotsTxtResponse { - type Output = Result, Error>; + type Output = Result, ReqwestError>; fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll { let self_mut = self.get_mut(); diff --git a/src/http/reqwest/sync_reqwest.rs b/src/http/reqwest/sync_reqwest.rs index 7c23cebd1..671cca410 100644 --- a/src/http/reqwest/sync_reqwest.rs +++ b/src/http/reqwest/sync_reqwest.rs @@ -6,18 +6,18 @@ use reqwest::header::USER_AGENT; use crate::http::{RobotsTxtClient, DEFAULT_USER_AGENT}; use crate::parser::{ParseResult, parse_fetched_robots_txt}; use crate::model::FetchedRobotsTxt; -use crate::model::{RobotparserError, ErrorKind}; +use crate::model::{Error, ErrorKind}; impl RobotsTxtClient for Client { - type Result = Result, RobotparserError>; + type Result = Result, Error>; fn fetch_robots_txt(&self, origin: Origin) -> Self::Result { let url = format!("{}/robots.txt", origin.unicode_serialization()); - let url = Url::parse(&url).map_err(|err| RobotparserError {kind: ErrorKind::Url(err)})?; + let url = Url::parse(&url).map_err(|err| Error {kind: ErrorKind::Url(err)})?; let mut request = Request::new(Method::GET, url); let _ = request.headers_mut().insert(USER_AGENT, HeaderValue::from_static(DEFAULT_USER_AGENT)); - let response = self.execute(request).map_err(|err| RobotparserError {kind: ErrorKind::Http(err)})?; + let response = self.execute(request).map_err(|err| Error {kind: ErrorKind::Http(err)})?; let status_code = response.status().as_u16(); - let text = response.text().map_err(|err| RobotparserError {kind: ErrorKind::Http(err)})?; + let text = response.text().map_err(|err| Error {kind: ErrorKind::Http(err)})?; let robots_txt = parse_fetched_robots_txt(origin, status_code, &text); return Ok(robots_txt); } diff --git a/src/model.rs b/src/model.rs index 16f1885f4..d56bd4a23 100644 --- a/src/model.rs +++ b/src/model.rs @@ -16,4 +16,4 @@ pub use self::robots_txt::RobotsTxt; mod path; pub (crate) use self::path::Path; mod errors; -pub use self::errors::{RobotparserError, ErrorKind}; +pub use self::errors::{Error, ErrorKind}; diff --git a/src/model/errors.rs b/src/model/errors.rs index 37036495c..dd631eb53 100644 --- a/src/model/errors.rs +++ b/src/model/errors.rs @@ -1,7 +1,7 @@ use std::fmt; #[derive(Debug)] -pub struct RobotparserError { +pub struct Error { pub kind: ErrorKind, } @@ -11,7 +11,7 @@ pub enum ErrorKind { Http(reqwest::Error), } -impl fmt::Display for RobotparserError { +impl fmt::Display for Error { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match self.kind { ErrorKind::Url(ref err) => err.fmt(f), @@ -19,3 +19,5 @@ impl fmt::Display for RobotparserError { } } } + +impl std::error::Error for Error {}