module Data.Time.HTTP.Internal
( httpDateAndTime
, toAsciiBuilder
)
where
import Control.Applicative
import Data.Ascii (AsciiBuilder)
import Data.Attoparsec.Char8
import Data.Time
import qualified Data.Time.RFC1123.Internal as RFC1123
import qualified Data.Time.RFC733.Internal as RFC733
import qualified Data.Time.Asctime.Internal as Asctime
import Prelude.Unicode
httpDateAndTime ∷ Parser UTCTime
httpDateAndTime
= choice [ zonedTimeToUTC <$> try RFC1123.rfc1123DateAndTime
, zonedTimeToUTC <$> try RFC733.rfc733DateAndTime
, localTimeToUTC utc <$> Asctime.asctime
]
toAsciiBuilder ∷ UTCTime → AsciiBuilder
toAsciiBuilder = RFC1123.toAsciiBuilder ∘ ut2zt
where
ut2zt ∷ UTCTime → ZonedTime
ut2zt = utcToZonedTime gmt
gmt ∷ TimeZone
gmt = TimeZone 0 False "GMT"