Update code to be compatible with reqwest 0.9

This commit is contained in:
Paul Woolcock
2018-09-20 11:23:43 -04:00
parent 7f0d57038f
commit 2d8958e0d9
6 changed files with 22 additions and 31 deletions
+1 -1
View File
@@ -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)
}
+6 -17
View File
@@ -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 {
+4 -4
View File
@@ -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)
+7 -6
View File
@@ -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) {
+3 -3
View File
@@ -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(),