@@ -1,4 +1,5 @@
11{-# LANGUAGE TemplateHaskell #-}
2+{-# LANGUAGE CPP #-}
23{-# LANGUAGE RankNTypes #-}
34{-# LANGUAGE ScopedTypeVariables #-}
45{-# LANGUAGE OverloadedStrings #-}
@@ -12,7 +13,12 @@ import Data.Char
1213import Data.Maybe
1314import Data.Time
1415import Control.Applicative
15−import System.Locale (defaultTimeLocale)
16+import Data.Time (ParseTime)
17+#if MIN_VERSION_time(1,5,0)
18+import Data.Time.Format (TimeLocale, defaultTimeLocale)
19+#else
20+import System.Locale (TimeLocale, defaultTimeLocale)
21+#endif
1622import qualified Data.ByteString as B
1723import qualified Data.ByteString.Base64 as Base64
1824import qualified Data.Text as T
@@ -27,6 +33,13 @@ import qualified Text.Blaze.Html as Blaze
2733import qualified Text.Blaze.Html.Renderer.Text as Blaze
2834
2935
36+timeParse :: ParseTime t => TimeLocale -> String -> String -> Maybe t
37+#if MIN_VERSION_time(1,5,0)
38+timeParse = parseTimeM True
39+#else
40+timeParse = parseTime
41+#endif
42+
3043--------------------------------------------------------------------------------
3144data MandrillError = MandrillError {
3245 _merr_status :: !T.Text
@@ -329,6 +342,6 @@ instance ToJSON MandrillDate where
329342
330343instance FromJSON MandrillDate where
331344 parseJSON = withText "MandrillDate" $ \t ->
332− case parseTime defaultTimeLocale "%Y-%m-%d %I:%M:%S%Q" (T.unpack t) of
345+ case timeParse defaultTimeLocale "%Y-%m-%d %I:%M:%S%Q" (T.unpack t) of
333346 Just d -> pure $ MandrillDate d
334347 _ -> fail "could not parse Mandrill date"