X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=time-http.git;a=blobdiff_plain;f=Data%2FTime%2FHTTP%2FInternal.hs;h=b008d9da6911d530050ae3d91a32efbf94afcd75;hp=aada8bd01b087258115995b276c5c54ef8ac32ed;hb=0b73811d9193e427a59e005b48f2ded06ca9ab1c;hpb=d62f138e9f756f7e75324d66a45c839ba8ef1334 diff --git a/Data/Time/HTTP/Internal.hs b/Data/Time/HTTP/Internal.hs index aada8bd..b008d9d 100644 --- a/Data/Time/HTTP/Internal.hs +++ b/Data/Time/HTTP/Internal.hs @@ -10,27 +10,35 @@ module Data.Time.HTTP.Internal import Control.Applicative import Data.Ascii (AsciiBuilder) import Data.Attoparsec.Char8 +import Data.Convertible.Base +import Data.Tagged import Data.Time -import qualified Data.Time.RFC1123.Internal as RFC1123 -import qualified Data.Time.RFC733.Internal as RFC733 -import qualified Data.Time.Asctime as Asctime +import Data.Time.RFC1123 +import Data.Time.RFC733 +import Data.Time.Asctime import Prelude.Unicode -- |Parse a date and time string in any formats allowed by HTTP\/1.1 -- (RFC 2616). httpDateAndTime ∷ Parser UTCTime httpDateAndTime - = choice [ zonedTimeToUTC <$> try RFC1123.rfc1123DateAndTime - , zonedTimeToUTC <$> try RFC733.rfc733DateAndTime - , localTimeToUTC utc <$> Asctime.asctime + = choice [ zonedTimeToUTC <$> try rfc1123DateAndTime + , zonedTimeToUTC <$> try rfc733DateAndTime + , localTimeToUTC utc <$> asctime ] -- |Convert a 'UTCTime' to RFC 1123 date and time string. toAsciiBuilder ∷ UTCTime → AsciiBuilder -toAsciiBuilder = RFC1123.toAsciiBuilder ∘ ut2zt +toAsciiBuilder = untag' ∘ cs ∘ ut2zt where + untag' ∷ Tagged RFC1123 AsciiBuilder → AsciiBuilder + {-# INLINE CONLIKE untag' #-} + untag' = untag + ut2zt ∷ UTCTime → ZonedTime + {-# INLINE ut2zt #-} ut2zt = utcToZonedTime gmt gmt ∷ TimeZone + {-# INLINE CONLIKE gmt #-} gmt = TimeZone 0 False "GMT"