summaryrefslogtreecommitdiffstats
path: root/third_party/rust/headers/src/common/server.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /third_party/rust/headers/src/common/server.rs
parentInitial commit. (diff)
downloadfirefox-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.rs72
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)
+ }
+}