Skip to content

Commit 011f28c

Browse files
committed
fix(headers): remove erronous link-extensions from Link
They can be re-added later, removing now prevents that fix from being a breaking change. BREAKING CHANGE: The `link_extensions` methods of the `Link` header are removed until fixed.
1 parent 21f547a commit 011f28c

File tree

1 file changed

+4
-36
lines changed

1 file changed

+4
-36
lines changed

src/header/common/link.rs

+4-36
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,6 @@ pub struct LinkValue {
104104
/// Hint on the media type of the result of dereferencing
105105
/// the link: `type`.
106106
media_type: Option<Mime>,
107-
108-
/// Link Extension: `link-extension`.
109-
link_extension: Option<String>
110107
}
111108

112109
/// A Media Descriptors Enum based on:
@@ -258,7 +255,6 @@ impl LinkValue {
258255
title: None,
259256
title_star: None,
260257
media_type: None,
261-
link_extension: None,
262258
}
263259
}
264260

@@ -307,11 +303,6 @@ impl LinkValue {
307303
self.media_type.as_ref()
308304
}
309305

310-
/// Get the `LinkValue`'s `link-extension` parameter.
311-
pub fn link_extension(&self) -> Option<&str> {
312-
self.link_extension.as_ref().map(AsRef::as_ref)
313-
}
314-
315306
/// Add a `RelationType` to the `LinkValue`'s `rel` parameter.
316307
pub fn push_rel(mut self, rel: RelationType) -> LinkValue {
317308
let mut v = self.rel.take().unwrap_or(Vec::new());
@@ -383,13 +374,6 @@ impl LinkValue {
383374

384375
self
385376
}
386-
387-
/// Set `LinkValue`'s `link-extension` parameter.
388-
pub fn set_link_extension<T: Into<String>>(mut self, link_extension: T) -> LinkValue {
389-
self.link_extension = Some(link_extension.into());
390-
391-
self
392-
}
393377
}
394378

395379
////////////////////////////////////////////////////////////////////////////////
@@ -464,9 +448,6 @@ impl fmt::Display for LinkValue {
464448
if let Some(ref media_type) = self.media_type {
465449
try!(write!(f, "; type=\"{}\"", media_type));
466450
}
467-
if let Some(ref link_extension) = self.link_extension {
468-
try!(write!(f, "; link-extension={}", link_extension));
469-
}
470451

471452
Ok(())
472453
}
@@ -501,7 +482,6 @@ impl FromStr for Link {
501482
title: None,
502483
title_star: None,
503484
media_type: None,
504-
link_extension: None,
505485
}
506486
},
507487
}
@@ -642,16 +622,6 @@ impl FromStr for Link {
642622

643623
};
644624
}
645-
} else if "link-extension".eq_ignore_ascii_case(link_param_name) {
646-
// Parse target attribute: `link-extension`.
647-
// https://tools.ietf.org/html/rfc5988#section-5.4
648-
if link_header.link_extension.is_none() {
649-
link_header.link_extension = match link_param_split.next() {
650-
None => return Err(::Error::Header),
651-
Some("") => return Err(::Error::Header),
652-
Some(s) => Some(String::from(s.trim())),
653-
};
654-
}
655625
} else {
656626
return Err(::Error::Header);
657627
}
@@ -986,14 +956,13 @@ mod tests {
986956
.push_media_desc(MediaDesc::Screen)
987957
.set_title("previous chapter")
988958
.set_title_star("title* unparsed")
989-
.set_media_type(Mime(Text, Plain, vec![]))
990-
.set_link_extension("link-extension unparsed");
959+
.set_media_type(Mime(Text, Plain, vec![]));
991960

992961
let link_header = b"<http://example.com/TheBook/chapter2>; \
993962
rel=\"previous\"; anchor=\"../anchor/example/\"; \
994963
rev=\"next\"; hreflang=de; media=\"screen\"; \
995964
title=\"previous chapter\"; title*=title* unparsed; \
996-
type=\"text/plain\"; link-extension=link-extension unparsed";
965+
type=\"text/plain\"";
997966

998967
let expected_link = Link::new(vec![link_value]);
999968

@@ -1046,8 +1015,7 @@ mod tests {
10461015
.push_media_desc(MediaDesc::Screen)
10471016
.set_title("previous chapter")
10481017
.set_title_star("title* unparsed")
1049-
.set_media_type(Mime(Text, Plain, vec![]))
1050-
.set_link_extension("link-extension unparsed");
1018+
.set_media_type(Mime(Text, Plain, vec![]));
10511019

10521020
let link = Link::new(vec![link_value]);
10531021

@@ -1058,7 +1026,7 @@ mod tests {
10581026
rel=\"previous\"; anchor=\"/anchor/example/\"; \
10591027
rev=\"next\"; hreflang=de; media=\"screen\"; \
10601028
title=\"previous chapter\"; title*=title* unparsed; \
1061-
type=\"text/plain\"; link-extension=link-extension unparsed";
1029+
type=\"text/plain\"";
10621030

10631031
assert_eq!(link_header, expected_link_header);
10641032
}

0 commit comments

Comments
 (0)