refactor(header): Implement HttpDate, a wrapper for dates

Using `time::Tm` directly in HTTP header fields requires special handling to parse and format
the header values., this stops us from using the header macros. By wrapping `time::Time` in a
`HttpDate`, we can use the `FromStr` and `Display` traits of `HttpDate` like for most other values.

BREAKING_CHANGE: All code using one of the `Date`, `Expires`, `If-Modified-Since`,
`If-Unmodified-Since`, `Last-Modified` header fields needs to wrap `time::Tm`
with `HttpDate`. Removed `FromStr` trait of `Date`, `If-Modified-Sice` and `If-Unmodified-Sice`,
implementing the trait here is inconsistent with other headers.
This commit is contained in:
Pyfisch
2015-03-31 17:29:31 +02:00
parent 4c5a42bcda
commit 6cf052bf0f
10 changed files with 110 additions and 262 deletions

View File

@@ -75,7 +75,7 @@ impl<'a> Response<'a, Fresh> {
try!(write!(&mut self.body, "{} {}{}{}", self.version, self.status, CR as char, LF as char));
if !self.headers.has::<header::Date>() {
self.headers.set(header::Date(now_utc()));
self.headers.set(header::Date(header::HttpDate(now_utc())));
}