summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Woolcock <paul@woolcock.us>2018-09-20 09:05:52 -0400
committerPaul Woolcock <paul@woolcock.us>2018-09-20 11:23:43 -0400
commit2d8958e0d90cb1206df6d28eab8b4294602184e3 (patch)
treede07c371ab922c2dc9e23ca5617ca8add688291d
parent7f0d57038f899692c73b9e14bb8caf62b5bfe3e4 (diff)
Update code to be compatible with reqwest 0.9
-rw-r--r--Cargo.toml1
-rw-r--r--src/http_send.rs2
-rw-r--r--src/lib.rs23
-rw-r--r--src/macros.rs8
-rw-r--r--src/page.rs13
-rw-r--r--src/registration.rs6
6 files changed, 22 insertions, 31 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 8c5dbce..5d220ff 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -22,6 +22,7 @@ url = "1"
tap-reader = "1"
try_from = "0.2.2"
toml = { version = "0.4.6", optional = true }
+hyper-old-types = "0.11.0"
[dependencies.chrono]
version = "0.4"
diff --git a/src/http_send.rs b/src/http_send.rs
index b81bb14..9c161f8 100644
--- a/src/http_send.rs
+++ b/src/http_send.rs
@@ -9,7 +9,7 @@ pub trait HttpSend: Clone + Debug {
/// Convenience method so that .build() doesn't have to be called at every
/// call site
- fn send(&self, client: &Client, builder: &mut RequestBuilder) -> Result<Response> {
+ fn send(&self, client: &Client, builder: RequestBuilder) -> Result<Response> {
let request = builder.build()?;
self.execute(client, request)
}
diff --git a/src/lib.rs b/src/lib.rs
index 695246c..aad83e9 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -46,6 +46,7 @@
extern crate serde_derive;
#[macro_use]
extern crate doc_comment;
+extern crate hyper_old_types;
extern crate isolang;
#[macro_use]
extern crate serde_json;
@@ -72,12 +73,7 @@ extern crate indoc;
use std::{borrow::Cow, ops};
-use reqwest::{
- header::{Authorization, Bearer, Headers},
- Client,
- RequestBuilder,
- Response,
-};
+use reqwest::{Client, RequestBuilder, Response};
use tap_reader::Tap;
use entities::prelude::*;
@@ -139,7 +135,6 @@ pub mod prelude {
pub struct Mastodon<H: HttpSend = HttpSender> {
client: Client,
http_sender: H,
- headers: Headers,
/// Raw data about your mastodon instance.
pub data: Data,
}
@@ -151,10 +146,10 @@ impl<H: HttpSend> Mastodon<H> {
format!("{}{}", self.base, url)
}
- pub(crate) fn send(&self, req: &mut RequestBuilder) -> Result<Response> {
+ pub(crate) fn send(&self, req: RequestBuilder) -> Result<Response> {
Ok(self
.http_sender
- .send(&self.client, req.headers(self.headers.clone()))?)
+ .send(&self.client, req.bearer_auth(&self.token))?)
}
}
@@ -361,7 +356,7 @@ impl<H: HttpSend> MastodonClient<H> for Mastodon<H> {
url = format!("{}{}", url, request.to_querystring());
}
- let response = self.send(&mut self.client.get(&url))?;
+ let response = self.send(self.client.get(&url))?;
Page::new(self, response)
}
@@ -383,7 +378,7 @@ impl<H: HttpSend> MastodonClient<H> for Mastodon<H> {
url.pop();
}
- let response = self.send(&mut self.client.get(&url))?;
+ let response = self.send(self.client.get(&url))?;
Page::new(self, response)
}
@@ -449,15 +444,9 @@ impl<H: HttpSend> MastodonBuilder<H> {
pub fn build(self) -> Result<Mastodon<H>> {
Ok(if let Some(data) = self.data {
- let mut headers = Headers::new();
- headers.set(Authorization(Bearer {
- token: (*data.token).to_owned(),
- }));
-
Mastodon {
client: self.client.unwrap_or_else(|| Client::new()),
http_sender: self.http_sender,
- headers,
data,
}
} else {
diff --git a/src/macros.rs b/src/macros.rs
index 1e743ee..967cb16 100644
--- a/src/macros.rs
+++ b/src/macros.rs
@@ -5,7 +5,7 @@ macro_rules! methods {
-> Result<T>
{
let response = self.send(
- &mut self.client.$method(&url)
+ self.client.$method(&url)
)?;
deserialise(response)
@@ -43,7 +43,7 @@ macro_rules! paged_routes {
fn $name(&self) -> Result<Page<$ret, H>> {
let url = self.route(concat!("/api/v1/", $url));
let response = self.send(
- &mut self.client.$method(&url)
+ self.client.$method(&url)
)?;
Page::new(self, response)
@@ -88,7 +88,7 @@ macro_rules! paged_routes {
let url = format!(concat!("/api/v1/", $url, "?{}"), &qs);
let response = self.send(
- &mut self.client.get(&url)
+ self.client.get(&url)
)?;
Page::new(self, response)
@@ -350,7 +350,7 @@ macro_rules! paged_routes_with_id {
fn $name(&self, id: &str) -> Result<Page<$ret, H>> {
let url = self.route(&format!(concat!("/api/v1/", $url), id));
let response = self.send(
- &mut self.client.$method(&url)
+ self.client.$method(&url)
)?;
Page::new(self, response)
diff --git a/src/page.rs b/src/page.rs
index 32ba048..cab4e09 100644
--- a/src/page.rs
+++ b/src/page.rs
@@ -1,9 +1,7 @@
use super::{deserialise, Mastodon, Result};
use entities::itemsiter::ItemsIter;
-use reqwest::{
- header::{Link, RelationType},
- Response,
-};
+use hyper_old_types::header::{parsing, Link, RelationType};
+use reqwest::{header::LINK, Response};
use serde::Deserialize;
use url::Url;
@@ -32,7 +30,7 @@ macro_rules! pages {
};
let response = self.mastodon.send(
- &mut self.mastodon.client.get(url)
+ self.mastodon.client.get(url)
)?;
let (prev, next) = get_links(&response)?;
@@ -108,7 +106,10 @@ fn get_links(response: &Response) -> Result<(Option<Url>, Option<Url>)> {
let mut prev = None;
let mut next = None;
- if let Some(link_header) = response.headers().get::<Link>() {
+ if let Some(link_header) = response.headers().get(LINK) {
+ let link_header = link_header.to_str().unwrap();
+ let link_header = link_header.as_bytes();
+ let link_header: Link = parsing::from_raw_str(&link_header).unwrap();
for value in link_header.values() {
if let Some(relations) = value.rel() {
if relations.contains(&RelationType::Next) {
diff --git a/src/registration.rs b/src/registration.rs
index 00a9125..817b820 100644
--- a/src/registration.rs
+++ b/src/registration.rs
@@ -99,7 +99,7 @@ impl<'a, H: HttpSend> Registration<'a, H> {
self
}
- fn send(&self, req: &mut RequestBuilder) -> Result<Response> {
+ fn send(&self, req: RequestBuilder) -> Result<Response> {
Ok(self.http_sender.send(&self.client, req)?)
}
@@ -184,7 +184,7 @@ impl<'a, H: HttpSend> Registration<'a, H> {
}
impl<H: HttpSend> Registered<H> {
- fn send(&self, req: &mut RequestBuilder) -> Result<Response> {
+ fn send(&self, req: RequestBuilder) -> Result<Response> {
Ok(self.http_sender.send(&self.client, req)?)
}
@@ -213,7 +213,7 @@ impl<H: HttpSend> Registered<H> {
self.redirect
);
- let token: AccessToken = self.send(&mut self.client.post(&url))?.json()?;
+ let token: AccessToken = self.send(self.client.post(&url))?.json()?;
let data = Data {
base: self.base.into(),