From 707b5b16e7dda6161179bcffab4ed1d858b1630f Mon Sep 17 00:00:00 2001 From: Jordan Johnson-Doyle Date: Wed, 13 Feb 2019 21:52:17 +0000 Subject: [PATCH] Use dereferencing for request parameters --- src/main.rs | 4 ++-- src/params.rs | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 84361e5..c8e08f0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -63,7 +63,7 @@ fn submit_raw(input: Data, host: HostHeader) -> std::io::Result { let paste = store_paste(data); - match host.0 { + match *host { Some(host) => Ok(format!("https://{}/{}", host, paste)), None => Ok(paste) } @@ -90,7 +90,7 @@ fn render(key: String, plaintext: IsPlaintextRequest) -> Option> // again so we can hold this for as long as we want let entry = get_paste(key)?; - if plaintext.0 { + if *plaintext { Some(Content(ContentType::Plain, entry)) } else { Some(Content(ContentType::HTML, Render { diff --git a/src/params.rs b/src/params.rs index e8b7930..7e8902a 100644 --- a/src/params.rs +++ b/src/params.rs @@ -1,3 +1,5 @@ +use std::ops::Deref; + use rocket::Request; use rocket::request::{FromRequest, Outcome}; @@ -7,6 +9,14 @@ use rocket::request::{FromRequest, Outcome}; /// and also anything calling us from the console or that we can't identify. pub struct IsPlaintextRequest(pub bool); +impl Deref for IsPlaintextRequest { + type Target = bool; + + fn deref(&self) -> &bool { + &self.0 + } +} + impl<'a, 'r> FromRequest<'a, 'r> for IsPlaintextRequest { type Error = (); @@ -30,6 +40,14 @@ impl<'a, 'r> FromRequest<'a, 'r> for IsPlaintextRequest { /// on the request. pub struct HostHeader<'a>(pub Option<&'a str>); +impl<'a> Deref for HostHeader<'a> { + type Target = Option<&'a str>; + + fn deref(&self) -> &Option<&'a str> { + &self.0 + } +} + impl<'a, 'r> FromRequest<'a, 'r> for HostHeader<'a> { type Error = (); -- libgit2 1.7.2