refactor redirect facade to use pub(crate)
This commit is contained in:
		| @@ -16,7 +16,7 @@ use super::request::{self, Request, RequestBuilder}; | ||||
| use super::response::{self, Response}; | ||||
| use connect::Connector; | ||||
| use into_url::to_uri; | ||||
| use redirect::{self, RedirectPolicy, check_redirect, remove_sensitive_headers}; | ||||
| use redirect::{self, RedirectPolicy, remove_sensitive_headers}; | ||||
| use {Certificate, Identity, IntoUrl, Method, Proxy, StatusCode, Url}; | ||||
|  | ||||
| static DEFAULT_USER_AGENT: &'static str = | ||||
| @@ -475,8 +475,7 @@ impl Future for PendingRequest { | ||||
|                         } | ||||
|                     } | ||||
|                     self.urls.push(self.url.clone()); | ||||
|                     let action = check_redirect( | ||||
|                         &self.client.redirect_policy, | ||||
|                     let action = self.client.redirect_policy.check( | ||||
|                         res.status(), | ||||
|                         &loc, | ||||
|                         &self.urls, | ||||
|   | ||||
| @@ -128,6 +128,21 @@ impl RedirectPolicy { | ||||
|             Policy::None => attempt.stop(), | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     pub(crate) fn check( | ||||
|         &self, | ||||
|         status: StatusCode, | ||||
|         next: &Url, | ||||
|         previous: &[Url], | ||||
|     ) -> Action { | ||||
|         self | ||||
|             .redirect(RedirectAttempt { | ||||
|                 status: status, | ||||
|                 next: next, | ||||
|                 previous: previous, | ||||
|             }) | ||||
|             .inner | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl Default for RedirectPolicy { | ||||
| @@ -205,30 +220,15 @@ impl fmt::Debug for Policy { | ||||
| // pub(crate) | ||||
|  | ||||
| #[derive(Debug, PartialEq)] | ||||
| pub enum Action { | ||||
| pub(crate) enum Action { | ||||
|     Follow, | ||||
|     Stop, | ||||
|     LoopDetected, | ||||
|     TooManyRedirects, | ||||
| } | ||||
|  | ||||
| #[inline] | ||||
| pub fn check_redirect( | ||||
|     policy: &RedirectPolicy, | ||||
|     status: StatusCode, | ||||
|     next: &Url, | ||||
|     previous: &[Url], | ||||
| ) -> Action { | ||||
|     policy | ||||
|         .redirect(RedirectAttempt { | ||||
|             status: status, | ||||
|             next: next, | ||||
|             previous: previous, | ||||
|         }) | ||||
|         .inner | ||||
| } | ||||
|  | ||||
| pub fn remove_sensitive_headers(headers: &mut HeaderMap, next: &Url, previous: &[Url]) { | ||||
| pub(crate) fn remove_sensitive_headers(headers: &mut HeaderMap, next: &Url, previous: &[Url]) { | ||||
|     if let Some(previous) = previous.last() { | ||||
|         let cross_host = next.host_str() != previous.host_str() || | ||||
|                          next.port_or_known_default() != previous.port_or_known_default(); | ||||
| @@ -268,14 +268,14 @@ fn test_redirect_policy_limit() { | ||||
|         .collect::<Vec<_>>(); | ||||
|  | ||||
|     assert_eq!( | ||||
|         check_redirect(&policy, StatusCode::FOUND, &next, &previous), | ||||
|         policy.check(StatusCode::FOUND, &next, &previous), | ||||
|         Action::Follow | ||||
|     ); | ||||
|  | ||||
|     previous.push(Url::parse("http://a.b.d/e/33").unwrap()); | ||||
|  | ||||
|     assert_eq!( | ||||
|         check_redirect(&policy, StatusCode::FOUND, &next, &previous), | ||||
|         policy.check(StatusCode::FOUND, &next, &previous), | ||||
|         Action::TooManyRedirects | ||||
|     ); | ||||
| } | ||||
| @@ -292,13 +292,13 @@ fn test_redirect_policy_custom() { | ||||
|  | ||||
|     let next = Url::parse("http://bar/baz").unwrap(); | ||||
|     assert_eq!( | ||||
|         check_redirect(&policy, StatusCode::FOUND, &next, &[]), | ||||
|         policy.check(StatusCode::FOUND, &next, &[]), | ||||
|         Action::Follow | ||||
|     ); | ||||
|  | ||||
|     let next = Url::parse("http://foo/baz").unwrap(); | ||||
|     assert_eq!( | ||||
|         check_redirect(&policy, StatusCode::FOUND, &next, &[]), | ||||
|         policy.check(StatusCode::FOUND, &next, &[]), | ||||
|         Action::Stop | ||||
|     ); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user