Replace hyper with reqwest (#7)
An old version of hyper was used before (0.8.0), in the process of updating to hyper 0.12.11, found this higher-level replacement/wrapper, reqwest 0.9.4 which is simpler to use than the latest hyper and serves the purpose of a simple HTTP client well
* Begin updating to hyper 0.12.11
https://github.com/iceiix/steven/issues/4#issuecomment-425759778
* Use type variables for hyper::Client
* Fix setting header syntax, Content-Type: application/json, 17->13
* Parse strings into URLs with url.parse::<hyper::Uri>().unwrap()
b20971cb4e/examples/client.rs (L25)
* Use hyper::Request::post() then client.request() since client.post() removed
* wait() on the ResponseFuture to get the Result
* try! to unwrap the Result
* status() is now a method
* Concatenate body chunks unwrap into bytes, then parse JSON from byte slice, instead of from_reader which didn't compile
* Replace send() with wait() on ResponseFuture
* Parse HeaderValue to u64
* Slices implement std::io::Read trait
* Read into_bytes() instead of read_to_end()
* Disable boxed logger for now to workaround 'expected function, found macro'
* Remove unnecessary mutability, warnings
* Hack to parse twice to avoid double move
* Use hyper-rustls pure Rust implementation for TLS for HTTPS in hyper
* Start converting to reqwest: add Protocol::Error and reqwest::Error conversion
* Use reqwest, replacing hyper, in protocol
* Convert resources to use reqwest instead of hyper
* Convert skin download to reqwest, instead of hyper
* Remove hyper
* Revert unnecessary variable name change req/body to reduce diff
* Revert unnecessary whitespace change to reduce diff, align indentation on .
* Fix authenticating to server, wrong method and join URL
* Update Cargo.lock
This commit is contained in:
parent
b2b1ec00ed
commit
88563ba894
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
use openssl::crypto::symm;
|
use openssl::crypto::symm;
|
||||||
use serde_json;
|
use serde_json;
|
||||||
use hyper;
|
use reqwest;
|
||||||
|
|
||||||
pub mod mojang;
|
pub mod mojang;
|
||||||
|
|
||||||
|
@ -690,7 +690,7 @@ pub enum Error {
|
||||||
Disconnect(format::Component),
|
Disconnect(format::Component),
|
||||||
IOError(io::Error),
|
IOError(io::Error),
|
||||||
Json(serde_json::Error),
|
Json(serde_json::Error),
|
||||||
Hyper(hyper::Error),
|
Reqwest(reqwest::Error),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl convert::From<io::Error> for Error {
|
impl convert::From<io::Error> for Error {
|
||||||
|
@ -705,9 +705,9 @@ impl convert::From<serde_json::Error> for Error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl convert::From<hyper::Error> for Error {
|
impl convert::From<reqwest::Error> for Error {
|
||||||
fn from(e: hyper::Error) -> Error {
|
fn from(e: reqwest::Error) -> Error {
|
||||||
Error::Hyper(e)
|
Error::Reqwest(e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -718,7 +718,7 @@ impl ::std::error::Error for Error {
|
||||||
Error::Disconnect(_) => "Disconnect",
|
Error::Disconnect(_) => "Disconnect",
|
||||||
Error::IOError(ref e) => e.description(),
|
Error::IOError(ref e) => e.description(),
|
||||||
Error::Json(ref e) => e.description(),
|
Error::Json(ref e) => e.description(),
|
||||||
Error::Hyper(ref e) => e.description(),
|
Error::Reqwest(ref e) => e.description(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -730,7 +730,7 @@ impl ::std::fmt::Display for Error {
|
||||||
Error::Disconnect(ref val) => write!(f, "{}", val),
|
Error::Disconnect(ref val) => write!(f, "{}", val),
|
||||||
Error::IOError(ref e) => e.fmt(f),
|
Error::IOError(ref e) => e.fmt(f),
|
||||||
Error::Json(ref e) => e.fmt(f),
|
Error::Json(ref e) => e.fmt(f),
|
||||||
Error::Hyper(ref e) => e.fmt(f),
|
Error::Reqwest(ref e) => e.fmt(f),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
use sha1::{self, Digest};
|
use sha1::{self, Digest};
|
||||||
use serde_json;
|
use serde_json;
|
||||||
use hyper;
|
use reqwest;
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct Profile {
|
pub struct Profile {
|
||||||
|
@ -40,11 +40,11 @@ impl Profile {
|
||||||
}});
|
}});
|
||||||
let req = try!(serde_json::to_string(&req_msg));
|
let req = try!(serde_json::to_string(&req_msg));
|
||||||
|
|
||||||
let client = hyper::Client::new();
|
let client = reqwest::Client::new();
|
||||||
let res = try!(client.post(LOGIN_URL)
|
let res = client.post(LOGIN_URL)
|
||||||
.body(&req)
|
.header(reqwest::header::CONTENT_TYPE, "application/json")
|
||||||
.header(hyper::header::ContentType("application/json".parse().unwrap()))
|
.body(req)
|
||||||
.send());
|
.send()?;
|
||||||
|
|
||||||
let ret: serde_json::Value = try!(serde_json::from_reader(res));
|
let ret: serde_json::Value = try!(serde_json::from_reader(res));
|
||||||
if let Some(error) = ret.get("error").and_then(|v| v.as_str()) {
|
if let Some(error) = ret.get("error").and_then(|v| v.as_str()) {
|
||||||
|
@ -68,18 +68,19 @@ impl Profile {
|
||||||
});
|
});
|
||||||
let req = try!(serde_json::to_string(&req_msg));
|
let req = try!(serde_json::to_string(&req_msg));
|
||||||
|
|
||||||
let client = hyper::Client::new();
|
let client = reqwest::Client::new();
|
||||||
let res = try!(client.post(VALIDATE_URL)
|
let res = client.post(VALIDATE_URL)
|
||||||
.body(&req)
|
.header(reqwest::header::CONTENT_TYPE, "application/json")
|
||||||
.header(hyper::header::ContentType("application/json".parse().unwrap()))
|
.body(req)
|
||||||
.send());
|
.send()?;
|
||||||
|
|
||||||
if res.status != hyper::status::StatusCode::NoContent {
|
if res.status() != reqwest::StatusCode::NO_CONTENT {
|
||||||
|
let req = try!(serde_json::to_string(&req_msg)); // TODO: fix parsing twice to avoid move
|
||||||
// Refresh needed
|
// Refresh needed
|
||||||
let res = try!(client.post(REFRESH_URL)
|
let res = client.post(REFRESH_URL)
|
||||||
.body(&req)
|
.header(reqwest::header::CONTENT_TYPE, "application/json")
|
||||||
.header(hyper::header::ContentType("application/json".parse().unwrap()))
|
.body(req)
|
||||||
.send());
|
.send()?;
|
||||||
|
|
||||||
let ret: serde_json::Value = try!(serde_json::from_reader(res));
|
let ret: serde_json::Value = try!(serde_json::from_reader(res));
|
||||||
if let Some(error) = ret.get("error").and_then(|v| v.as_str()) {
|
if let Some(error) = ret.get("error").and_then(|v| v.as_str()) {
|
||||||
|
@ -126,13 +127,13 @@ impl Profile {
|
||||||
});
|
});
|
||||||
let join = serde_json::to_string(&join_msg).unwrap();
|
let join = serde_json::to_string(&join_msg).unwrap();
|
||||||
|
|
||||||
let client = hyper::Client::new();
|
let client = reqwest::Client::new();
|
||||||
let res = try!(client.post(JOIN_URL)
|
let res = client.post(JOIN_URL)
|
||||||
.body(&join)
|
.header(reqwest::header::CONTENT_TYPE, "application/json")
|
||||||
.header(hyper::header::ContentType("application/json".parse().unwrap()))
|
.body(join)
|
||||||
.send());
|
.send()?;
|
||||||
|
|
||||||
if res.status == hyper::status::StatusCode::NoContent {
|
if res.status() == reqwest::StatusCode::NO_CONTENT {
|
||||||
Ok(())
|
Ok(())
|
||||||
} else {
|
} else {
|
||||||
Err(super::Error::Err("Failed to auth with server".to_owned()))
|
Err(super::Error::Err("Failed to auth with server".to_owned()))
|
||||||
|
|
Loading…
Reference in New Issue