allow non-'static HTTP method names

Background: RTSP uses HTTP digest authentication (see RFC 2326 section
1.4). I'm using the rtsp-types crate. It works fine with digest_auth,
except that [rtsp_types::Method::Extension](https://docs.rs/rtsp-types/0.0.1/rtsp_types/enum.Method.html#variant.Extension)
has a non-static lifetime.
master
Scott Lamb 4 years ago
parent 750294cd97
commit 2e61615da0
  1. 4
      src/digest.rs
  2. 8
      src/enums.rs

@ -161,7 +161,7 @@ pub struct AuthContext<'a> {
/// May be left out if not using auth-int /// May be left out if not using auth-int
pub body: Option<Cow<'a, [u8]>>, pub body: Option<Cow<'a, [u8]>>,
/// HTTP method used (defaults to GET) /// HTTP method used (defaults to GET)
pub method: HttpMethod, pub method: HttpMethod<'a>,
/// Spoofed client nonce (use only for tests; a random nonce is generated automatically) /// Spoofed client nonce (use only for tests; a random nonce is generated automatically)
pub cnonce: Option<Cow<'a, str>>, pub cnonce: Option<Cow<'a, str>>,
} }
@ -202,7 +202,7 @@ impl<'a> AuthContext<'a> {
password: PW, password: PW,
uri: UR, uri: UR,
body: Option<BD>, body: Option<BD>,
method: HttpMethod, method: HttpMethod<'a>,
) -> Self ) -> Self
where where
UN: Into<Cow<'a, str>>, UN: Into<Cow<'a, str>>,

@ -168,20 +168,20 @@ impl Display for Charset {
/// HTTP method (used when generating the response hash for some Qop options) /// HTTP method (used when generating the response hash for some Qop options)
#[derive(Debug)] #[derive(Debug)]
pub enum HttpMethod { pub enum HttpMethod<'a> {
GET, GET,
POST, POST,
HEAD, HEAD,
OTHER(&'static str), OTHER(&'a str),
} }
impl Default for HttpMethod { impl<'a> Default for HttpMethod<'a> {
fn default() -> Self { fn default() -> Self {
HttpMethod::GET HttpMethod::GET
} }
} }
impl Display for HttpMethod { impl<'a> Display for HttpMethod<'a> {
/// Convert to uppercase string /// Convert to uppercase string
fn fmt(&self, f: &mut Formatter) -> fmt::Result { fn fmt(&self, f: &mut Formatter) -> fmt::Result {
f.write_str(match self { f.write_str(match self {

Loading…
Cancel
Save