AbsoluteUri, Uri, HierarchicalPath, Authority, UriPath, UserInfo, AbsolutePath,
Scheme, Method, Transport, UserParam, Version, RequestLine, StatusLine, TopLine,
Header, MediaType, MediaFullType, MediaParameter, MediaRange, GenericParam,
- AcceptParam, AcceptRange, Coding, Encoding, LanguageRange, Language, AlertParam, Qop,
- AuthenticationInfo, AuthParam, Algorithm, DigestResponse, Credentials, CallId,
- Purpose, InfoParam, Info, NameAddr, ContactParam, ContactTarget, Contact,
- DispositionType, Handling, DispositionParam, ContentCoding};
+ AcceptParam, AcceptRange, Coding, Encoding, LanguageTag, LanguageRange, Language,
+ AlertParam, Qop, AuthenticationInfo, AuthParam, Algorithm, DigestResponse,
+ Credentials, CallId, Purpose, InfoParam, Info, NameAddr, ContactParam, ContactTarget,
+ Contact, DispositionType, Handling, DispositionParam, ContentCoding};
fn is_mark(c: u8) -> bool {
c == b'-' || c == b'_' || c == b'.' || c == b'!' || c == b'~' || c == b'*' || c == b'\'' ||
named!(language_token<Vec<u8>>, many1!(alpha));
-named!(_language_range<Vec<Vec<u8>>>, separated_nonempty_list!(
+named!(language_tag<LanguageTag>, separated_nonempty_list!(
tag!(b"-"),
language_token));
named!(language_range<LanguageRange>, alt!(
tag!(b"*") => { |_| LanguageRange::All } |
- _language_range => { |x : Vec<Vec<u8>>| LanguageRange::Range(x) }));
+ language_tag => { |x : LanguageTag| LanguageRange::Range(x) }));
named!(language<Language>, tuple!(
language_range,
tag!(b","),
token)));
+named!(content_language_header<Vec<LanguageTag>>, preceded!(
+ tag!(b"Content-Language:"),
+ separated_nonempty_list!(
+ tag!(b","),
+ language_tag)));
+
named!(pub header<Header>, alt!(
// RFC 3261 Headers
accept_header => { |a| Header::Accept(a) } |
call_info_header => { |c| Header::CallInfo(c) } |
contact_header => { |c| Header::Contact(c) } |
content_disposition_header => { |(t, p)| Header::ContentDisposition(t, p) } |
- content_encoding_header => { |e| Header::ContentEncoding(e) }
+ content_encoding_header => { |e| Header::ContentEncoding(e) } |
+ content_language_header => { |l| Header::ContentLanguage(l) }
));