Skip to content

Commit 84b4534

Browse files
mattwilkinsonnseanmonstar
authored andcommitted
tryfrom HeaderValue -> OriginOrAny
1 parent c6a8a63 commit 84b4534

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

src/common/access_control_allow_origin.rs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ use HeaderValue;
3131
///
3232
/// let any_origin = AccessControlAllowOrigin::ANY;
3333
/// let null_origin = AccessControlAllowOrigin::NULL;
34-
/// let origin = AccessControlAllowOrigin::try_from("http://web-platform.test:8000".to_string());
34+
/// let origin = AccessControlAllowOrigin::try_from("http://web-platform.test:8000");
3535
/// ```
3636
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
3737
pub struct AccessControlAllowOrigin(OriginOrAny);
@@ -64,16 +64,26 @@ impl AccessControlAllowOrigin {
6464
}
6565
}
6666

67-
impl TryFrom<String> for AccessControlAllowOrigin {
67+
impl TryFrom<&str> for AccessControlAllowOrigin {
6868
type Error = ::Error;
6969

70-
fn try_from(s: String) -> Result<Self, ::Error> {
71-
let header_value = HeaderValue::from_str(&s).map_err(|_| headers_core::Error::invalid())?;
72-
let origin = OriginOrAny::try_from_values(&mut vec![header_value].iter())?;
70+
fn try_from(s: &str) -> Result<Self, ::Error> {
71+
let header_value = HeaderValue::from_str(s).map_err(|_| ::Error::invalid())?;
72+
let origin = OriginOrAny::try_from(&header_value)?;
7373
Ok(Self(origin))
7474
}
7575
}
7676

77+
impl TryFrom<&HeaderValue> for OriginOrAny {
78+
type Error = ::Error;
79+
80+
fn try_from(header_value: &HeaderValue) -> Result<Self, ::Error> {
81+
Origin::try_from_value(header_value)
82+
.map(OriginOrAny::Origin)
83+
.ok_or_else(::Error::invalid)
84+
}
85+
}
86+
7787
impl TryFromValues for OriginOrAny {
7888
fn try_from_values<'i, I>(values: &mut I) -> Result<Self, ::Error>
7989
where
@@ -127,7 +137,7 @@ mod tests {
127137
fn try_from_origin() {
128138
let s = "http://web-platform.test:8000";
129139

130-
let allow_origin = AccessControlAllowOrigin::try_from(s.to_string()).unwrap();
140+
let allow_origin = AccessControlAllowOrigin::try_from(s).unwrap();
131141
{
132142
let origin = allow_origin.origin().unwrap();
133143
assert_eq!(origin.scheme(), "http");

0 commit comments

Comments
 (0)