X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=time-http.git;a=blobdiff_plain;f=Data%2FTime%2FHTTP.hs;fp=Data%2FTime%2FHTTP.hs;h=0000000000000000000000000000000000000000;hp=f106fc4c7f397f77466f75b3a986937ea68d16a3;hb=2064aacf48e193924b6ffe18a50853d233c16b98;hpb=901a3635d37e25a2d4c2e1562c32c68c410fbdd3 diff --git a/Data/Time/HTTP.hs b/Data/Time/HTTP.hs deleted file mode 100644 index f106fc4..0000000 --- a/Data/Time/HTTP.hs +++ /dev/null @@ -1,77 +0,0 @@ -{-# LANGUAGE - UnicodeSyntax - #-} --- |This module provides functions to parse and format HTTP\/1.1 date --- and time formats. --- --- The HTTP\/1.1 specification (RFC 2616) says that HTTP\/1.1 clients --- and servers which parse the date value MUST accept all the --- following formats, though they MUST only generate the RFC 1123 --- format for representing HTTP-date values in header fields: --- --- > Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 --- > Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 --- > Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format --- --- It also says that all HTTP date\/time stamps MUST be represented in --- Greenwich Mean Time (GMT), without exception. For the purposes of --- HTTP, GMT is exactly equal to UTC (Coordinated Universal --- Time). This is indicated in the first two formats by the inclusion --- of @\"GMT\"@ as the three-letter abbreviation for time zone, and --- MUST be assumed when reading the asctime format. --- --- > HTTP-date = rfc1123-date | rfc850-date | asctime-date --- > rfc1123-date = wkday "," SP date1 SP time SP "GMT" --- > rfc850-date = weekday "," SP date2 SP time SP "GMT" --- > asctime-date = wkday SP date3 SP time SP 4DIGIT --- > date1 = 2DIGIT SP month SP 4DIGIT --- > ; day month year (e.g., 02 Jun 1982) --- > date2 = 2DIGIT "-" month "-" 2DIGIT --- > ; day-month-year (e.g., 02-Jun-82) --- > date3 = month SP ( 2DIGIT | ( SP 1DIGIT )) --- > ; month day (e.g., Jun 2) --- > time = 2DIGIT ":" 2DIGIT ":" 2DIGIT --- > ; 00:00:00 - 23:59:59 --- > wkday = "Mon" | "Tue" | "Wed" --- > | "Thu" | "Fri" | "Sat" | "Sun" --- > weekday = "Monday" | "Tuesday" | "Wednesday" --- > | "Thursday" | "Friday" | "Saturday" | "Sunday" --- > month = "Jan" | "Feb" | "Mar" | "Apr" --- > | "May" | "Jun" | "Jul" | "Aug" --- > | "Sep" | "Oct" | "Nov" | "Dec" -module Data.Time.HTTP - ( -- * Formatting - toAscii - , toAsciiBuilder - - -- * Parsing - , fromAscii - , httpDateAndTime - ) - where -import Data.Ascii (Ascii) -import qualified Data.Ascii as A -import qualified Data.Attoparsec.Char8 as P -import Data.Time -import Data.Time.HTTP.Internal -import Prelude.Unicode - --- |Convert a 'UTCTime' to RFC 1123 date and time string. -toAscii ∷ UTCTime → Ascii -toAscii = A.fromAsciiBuilder ∘ toAsciiBuilder - --- |Parse a date and time string in any of RFC 822, RFC 1123, RFC 850 --- and ANSI C's asctime() formats. When the string can't be parsed, it --- returns @'Left' err@. --- --- This function is even more permissive than what HTTP\/1.1 --- specifies. That is, it accepts 2-digit years in RFC 822, omitted --- separator symbols in RFC 850, omitted sec fields, and non-GMT time --- zones. I believe this behavior will not cause a problem but you --- should know this. -fromAscii ∷ Ascii → Either String UTCTime -fromAscii = P.parseOnly p ∘ A.toByteString - where - p = do zt ← httpDateAndTime - P.endOfInput - return zt