add new trait called IntoUrl
parent
66bed7f049
commit
f1c0bc340e
|
@ -0,0 +1,21 @@
|
|||
pub trait IntoUrl {
|
||||
fn into_url(self) -> Result<url::Url, url::ParseError>;
|
||||
}
|
||||
|
||||
impl<'a> IntoUrl for &'a str {
|
||||
fn into_url(self) -> Result<url::Url, url::ParseError> {
|
||||
url::Url::parse(self)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> IntoUrl for &'a String {
|
||||
fn into_url(self) -> Result<url::Url, url::ParseError> {
|
||||
(&**self).into_url()
|
||||
}
|
||||
}
|
||||
|
||||
impl IntoUrl for String {
|
||||
fn into_url(self) -> Result<url::Url, url::ParseError> {
|
||||
(&*self).into_url()
|
||||
}
|
||||
}
|
|
@ -1,3 +1,4 @@
|
|||
pub mod into_url;
|
||||
pub mod request;
|
||||
pub mod response;
|
||||
pub mod selector;
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
use http::Method;
|
||||
use serde::Serialize;
|
||||
use url::{ParseError, Url};
|
||||
use url::ParseError;
|
||||
|
||||
use crate::into_url::IntoUrl;
|
||||
use crate::response;
|
||||
|
||||
pub trait RequestBase {
|
||||
fn new(url: &'static str) -> Result<Self, ParseError>
|
||||
fn new<T: IntoUrl>(url: T) -> Result<Self, ParseError>
|
||||
where
|
||||
Self: Sized;
|
||||
fn launch(self) -> response::Response;
|
||||
|
@ -18,8 +19,8 @@ pub struct Request {
|
|||
}
|
||||
|
||||
impl RequestBase for Request {
|
||||
fn new<'a>(url: &'a str) -> Result<Request, ParseError> {
|
||||
match Url::parse(url) {
|
||||
fn new<T: IntoUrl>(url: T) -> Result<Request, ParseError> {
|
||||
match url.into_url() {
|
||||
Ok(url_parsed) => Ok(Request {
|
||||
url: url_parsed,
|
||||
method: Method::GET,
|
||||
|
|
Loading…
Reference in New Issue