From 8cf174b158f25ebfd2afcfce0617755e41726c5e Mon Sep 17 00:00:00 2001 From: tottoto Date: Sat, 20 Jan 2024 06:52:17 +0900 Subject: [PATCH] feat: add method to check if AcceptRanges is bytes --- src/common/accept_ranges.rs | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/common/accept_ranges.rs b/src/common/accept_ranges.rs index cfea4499..e763fa9d 100644 --- a/src/common/accept_ranges.rs +++ b/src/common/accept_ranges.rs @@ -1,3 +1,5 @@ +use http::HeaderValue; + use util::FlatCsv; /// `Accept-Ranges` header, defined in [RFC7233](http://tools.ietf.org/html/rfc7233#section-2.3) @@ -34,9 +36,33 @@ derive_header! { name: ACCEPT_RANGES } +const ACCEPT_RANGES_BYTES: HeaderValue = ::HeaderValue::from_static("bytes"); + impl AcceptRanges { /// A constructor to easily create the common `Accept-Ranges: bytes` header. pub fn bytes() -> Self { - AcceptRanges(::HeaderValue::from_static("bytes").into()) + AcceptRanges(ACCEPT_RANGES_BYTES.into()) + } + + /// Check if the unit is `bytes`. + pub fn is_bytes(&self) -> bool { + self.0.value == ACCEPT_RANGES_BYTES + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn bytes() { + let bytes_range = AcceptRanges::bytes(); + assert!(bytes_range.is_bytes()); + } + + #[test] + fn bytes_fails() { + let none_range = AcceptRanges(::HeaderValue::from_static("none").into()); + assert!(!none_range.is_bytes()); } }