diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /third_party/rust/headers/src/common/server.rs | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/headers/src/common/server.rs')
-rw-r--r-- | third_party/rust/headers/src/common/server.rs | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/third_party/rust/headers/src/common/server.rs b/third_party/rust/headers/src/common/server.rs new file mode 100644 index 0000000000..b0e8f88099 --- /dev/null +++ b/third_party/rust/headers/src/common/server.rs @@ -0,0 +1,72 @@ +use std::fmt; +use std::str::FromStr; + +use util::HeaderValueString; + +/// `Server` header, defined in [RFC7231](http://tools.ietf.org/html/rfc7231#section-7.4.2) +/// +/// The `Server` header field contains information about the software +/// used by the origin server to handle the request, which is often used +/// by clients to help identify the scope of reported interoperability +/// problems, to work around or tailor requests to avoid particular +/// server limitations, and for analytics regarding server or operating +/// system use. An origin server MAY generate a Server field in its +/// responses. +/// +/// # ABNF +/// +/// ```text +/// Server = product *( RWS ( product / comment ) ) +/// ``` +/// +/// # Example values +/// * `CERN/3.0 libwww/2.17` +/// +/// # Example +/// +/// ``` +/// # extern crate headers; +/// use headers::Server; +/// +/// let server = Server::from_static("hyper/0.12.2"); +/// ``` +#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub struct Server(HeaderValueString); + +derive_header! { + Server(_), + name: SERVER +} + +impl Server { + /// Construct a `Server` from a static string. + /// + /// # Panic + /// + /// Panics if the static string is not a legal header value. + pub fn from_static(s: &'static str) -> Server { + Server(HeaderValueString::from_static(s)) + } + + /// View this `Server` as a `&str`. + pub fn as_str(&self) -> &str { + self.0.as_str() + } +} + +error_type!(InvalidServer); + +impl FromStr for Server { + type Err = InvalidServer; + fn from_str(src: &str) -> Result<Self, Self::Err> { + HeaderValueString::from_str(src) + .map(Server) + .map_err(|_| InvalidServer { _inner: () }) + } +} + +impl fmt::Display for Server { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Display::fmt(&self.0, f) + } +} |