From 83587a10d2c7667360b2846a0601df2bc48c9677 Mon Sep 17 00:00:00 2001 From: ranfdev Date: Sat, 26 Sep 2020 22:09:43 +0200 Subject: Manually updated reqwest to 10.8 and url to 2.1 --- src/registration.rs | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) (limited to 'src/registration.rs') diff --git a/src/registration.rs b/src/registration.rs index 32bac61..5379e87 100644 --- a/src/registration.rs +++ b/src/registration.rs @@ -1,9 +1,8 @@ use std::borrow::Cow; -use reqwest::{Client, RequestBuilder, Response}; +use reqwest::blocking::{Client, RequestBuilder, Response}; use serde::Deserialize; use try_from::TryInto; -use url::percent_encoding::{utf8_percent_encode, DEFAULT_ENCODE_SET}; use crate::{ apps::{App, AppBuilder}, @@ -289,22 +288,16 @@ impl Registered { /// Returns the full url needed for authorisation. This needs to be opened /// in a browser. pub fn authorize_url(&self) -> Result { - let scopes = format!("{}", self.scopes); - let scopes: String = utf8_percent_encode(&scopes, DEFAULT_ENCODE_SET).collect(); - let url = if self.force_login { - format!( - "{}/oauth/authorize?client_id={}&redirect_uri={}&scope={}&force_login=true&\ - response_type=code", - self.base, self.client_id, self.redirect, scopes, - ) - } else { - format!( - "{}/oauth/authorize?client_id={}&redirect_uri={}&scope={}&response_type=code", - self.base, self.client_id, self.redirect, scopes, - ) - }; + let mut url = url::Url::parse(&self.base)?.join("/oauth/authorize")?; + + url.query_pairs_mut() + .append_pair("client_id", &self.client_id) + .append_pair("redirect_uri", &self.redirect) + .append_pair("scope", &self.scopes.to_string()) + .append_pair("response_type", "code") + .append_pair("force_login", &self.force_login.to_string()); - Ok(url) + Ok(url.into_string()) } /// Create an access token from the client id, client secret, and code -- cgit v1.2.3