X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=time-http.git;a=blobdiff_plain;f=Data%2FTime%2FFormat%2FHTTP.hs;h=2c44147295cbe03ce0d0668600a3b13fce0f6492;hp=7e30cbfc48138e681bdb1aec65d944a2fbea2545;hb=feaeeec;hpb=91c2402d530afff7f1fd4eee333f84cbe18d1014 diff --git a/Data/Time/Format/HTTP.hs b/Data/Time/Format/HTTP.hs index 7e30cbf..2c44147 100644 --- a/Data/Time/Format/HTTP.hs +++ b/Data/Time/Format/HTTP.hs @@ -46,6 +46,7 @@ -- > | "Sep" | "Oct" | "Nov" | "Dec" module Data.Time.Format.HTTP ( HTTP + , http , httpDateAndTime ) where @@ -54,9 +55,10 @@ import Data.Ascii (Ascii, AsciiBuilder) import qualified Data.Ascii as A import Data.Attoparsec.Char8 import Data.Convertible.Base +import Data.Proxy import Data.Tagged import Data.Time -import Data.Time.Format.Asctime +import Data.Time.Format.C import Data.Time.Format.HTTP.Common import Data.Time.Format.RFC733 import Data.Time.Format.RFC822 @@ -70,6 +72,12 @@ import Prelude.Unicode -- Tagged "Sun, 06 Nov 1994 08:49:37 GMT" data HTTP +-- |The proxy for conversions between ANSI HTTP/1.1 date and time +-- strings and 'UTCTime'. +http ∷ Proxy HTTP +{-# INLINE CONLIKE http #-} +http = Proxy + instance ConvertSuccess UTCTime (Tagged HTTP Ascii) where {-# INLINE convertSuccess #-} convertSuccess = (A.fromAsciiBuilder <$>) ∘ cs @@ -95,16 +103,13 @@ httpDateAndTime = choice [ zonedTimeToUTC <$> try rfc1123DateAndTime , zonedTimeToUTC <$> try rfc733DateAndTime , zonedTimeToUTC <$> try rfc822DateAndTime - , localTimeToUTC utc <$> asctime + , localTimeToUTC utc <$> cDateAndTime ] toAsciiBuilder ∷ UTCTime → AsciiBuilder -toAsciiBuilder = untag' ∘ cs ∘ ut2zt +{-# INLINE toAsciiBuilder #-} +toAsciiBuilder = flip proxy rfc1123 ∘ cs ∘ ut2zt where - untag' ∷ Tagged RFC1123 AsciiBuilder → AsciiBuilder - {-# INLINE CONLIKE untag' #-} - untag' = untag - ut2zt ∷ UTCTime → ZonedTime {-# INLINE ut2zt #-} ut2zt = utcToZonedTime gmt