Switching to rust-url#1.0.0

This commit is contained in:
Tomasz Drwięga 2016-04-27 22:41:46 +02:00
parent c2787d80c8
commit ea4346e945
3 changed files with 41 additions and 48 deletions

14
Cargo.lock generated
View File

@ -364,7 +364,7 @@ dependencies = [
"parity-status 0.2.2 (git+https://github.com/tomusdrw/parity-status.git)", "parity-status 0.2.2 (git+https://github.com/tomusdrw/parity-status.git)",
"parity-wallet 0.1.1 (git+https://github.com/tomusdrw/parity-wallet.git)", "parity-wallet 0.1.1 (git+https://github.com/tomusdrw/parity-wallet.git)",
"parity-webapp 0.1.0 (git+https://github.com/tomusdrw/parity-webapp.git)", "parity-webapp 0.1.0 (git+https://github.com/tomusdrw/parity-webapp.git)",
"url 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
@ -494,21 +494,22 @@ dependencies = [
[[package]] [[package]]
name = "hyper" name = "hyper"
version = "0.9.0-mio" version = "0.9.0-mio"
source = "git+https://github.com/hyperium/hyper?branch=mio#55c7d7a1d88001e529b3d3b3a6783548ce8c3d06" source = "git+https://github.com/hyperium/hyper?branch=mio#fab6c4173063a10f2aacfe3872150537da3dcfdd"
dependencies = [ dependencies = [
"cookie 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "cookie 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
"httparse 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"mime 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"mio 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rotor 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "rotor 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"spmc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)",
"traitobject 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "traitobject 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"url 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"vecio 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "vecio 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
@ -1061,6 +1062,11 @@ dependencies = [
"log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]]
name = "spmc"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]] [[package]]
name = "strsim" name = "strsim"
version = "0.3.0" version = "0.3.0"

View File

@ -12,7 +12,7 @@ log = "0.3"
jsonrpc-core = "2.0" jsonrpc-core = "2.0"
jsonrpc-http-server = { git = "https://github.com/debris/jsonrpc-http-server.git" } jsonrpc-http-server = { git = "https://github.com/debris/jsonrpc-http-server.git" }
hyper = { default-features = false, git = "https://github.com/hyperium/hyper", branch = "mio" } hyper = { default-features = false, git = "https://github.com/hyperium/hyper", branch = "mio" }
url = "0.5" url = "1.0"
ethcore-rpc = { path = "../rpc" } ethcore-rpc = { path = "../rpc" }
ethcore-util = { path = "../util" } ethcore-util = { path = "../util" }
parity-webapp = { git = "https://github.com/tomusdrw/parity-webapp.git" } parity-webapp = { git = "https://github.com/tomusdrw/parity-webapp.git" }

View File

@ -17,8 +17,7 @@
//! HTTP/HTTPS URL type. Based on URL type from Iron library. //! HTTP/HTTPS URL type. Based on URL type from Iron library.
use url::Host; use url::Host;
use url::{whatwg_scheme_type_mapper}; use url::{self};
use url::{self, SchemeData, SchemeType};
/// HTTP/HTTPS URL type for Iron. /// HTTP/HTTPS URL type for Iron.
#[derive(PartialEq, Eq, Clone, Debug)] #[derive(PartialEq, Eq, Clone, Debug)]
@ -83,50 +82,38 @@ impl Url {
/// Create a `Url` from a `rust-url` `Url`. /// Create a `Url` from a `rust-url` `Url`.
pub fn from_generic_url(raw_url: url::Url) -> Result<Url, String> { pub fn from_generic_url(raw_url: url::Url) -> Result<Url, String> {
// Create an Iron URL by extracting the special scheme data.
match raw_url.scheme_data {
SchemeData::Relative(data) => {
// Extract the port as a 16-bit unsigned integer. // Extract the port as a 16-bit unsigned integer.
let port: u16 = match data.port { let port: u16 = match raw_url.port_or_known_default() {
// If explicitly defined, unwrap it.
Some(port) => port, Some(port) => port,
// Otherwise, use the scheme's default port.
None => { None => {
match whatwg_scheme_type_mapper(&raw_url.scheme) { return Err(format!("Unknown port for scheme: `{}`", raw_url.scheme()))
SchemeType::Relative(port) => port,
_ => return Err(format!("Invalid special scheme: `{}`",
raw_url.scheme))
}
} }
}; };
// Map empty usernames to None. // Map empty usernames to None.
let username = match &*data.username { let username = match &*raw_url.username() {
"" => None, "" => None,
_ => Some(data.username) _ => Some(raw_url.username().to_owned())
}; };
// Map empty passwords to None. // Map empty passwords to None.
let password = match data.password { let password = match raw_url.password() {
None => None, None => None,
Some(ref x) if x.is_empty() => None, Some(ref x) if x.is_empty() => None,
Some(password) => Some(password) Some(password) => Some(password.to_owned())
}; };
let as_string = |x: &str| x.to_owned();
Ok(Url { Ok(Url {
scheme: raw_url.scheme, scheme: raw_url.scheme().to_owned(),
host: data.host, host: raw_url.host().expect("Valid host, because only data:, mailto: protocols does not have host.").to_owned(),
port: port, port: port,
path: data.path, path: raw_url.path_segments().expect("Valid path segments. In HTTP we won't get cannot-be-a-base URLs").map(&as_string).collect(),
username: username, username: username,
password: password, password: password,
query: raw_url.query, query: raw_url.query().map(&as_string),
fragment: raw_url.fragment fragment: raw_url.fragment().map(&as_string),
}) })
},
_ => Err(format!("Not a special scheme: `{}`", raw_url.scheme))
}
} }
} }