@@ -39,6 +39,11 @@ import Data.Text.Read (Reader, decimal, rational,
40import Data.Time
40import Data.Time
41import Data.Time.Locale.Compat
41import Data.Time.Locale.Compat
43+#if MIN_VERSION_time(1,9,1)
44+import Data.Time (nominalDiffTimeToSeconds, secondsToNominalDiffTime)
42import Data.Version
47import Data.Version
44import Data.Void
49import Data.Void
@@ -486,8 +491,28 @@ instance ToHttpApiData UTCTime where
486 toUrlPiece = timeToUrlPiece "%H:%M:%S%QZ"
491 toUrlPiece = timeToUrlPiece "%H:%M:%S%QZ"
487 toEncodedUrlPiece = unsafeToEncodedUrlPiece
492 toEncodedUrlPiece = unsafeToEncodedUrlPiece
494+-- The CPP in both this function and the function after it are to avoid
495+-- exporting @nominalDiffTimeToSeconds@ and @secondsToNominalDiffTime@,
496+-- since these names are already used by @Data.Time@ from the @time@ library
497+-- starting in version @1.9.1@.
498+nominalDiffTimeToSecs :: NominalDiffTime -> F.Pico
499+nominalDiffTimeToSecs =
500+#if !MIN_VERSION_time(1,9,1)
503+ nominalDiffTimeToSeconds
506+secsToNominalDiffTime :: F.Pico -> NominalDiffTime
507+secsToNominalDiffTime =
508+#if !MIN_VERSION_time(1,9,1)
511+ secondsToNominalDiffTime
489instance ToHttpApiData NominalDiffTime where
514instance ToHttpApiData NominalDiffTime where
490− toUrlPiece = toUrlPiece . (floor :: NominalDiffTime -> Integer)
515+ toUrlPiece = toUrlPiece . nominalDiffTimeToSecs
491 toEncodedUrlPiece = unsafeToEncodedUrlPiece
516 toEncodedUrlPiece = unsafeToEncodedUrlPiece
493instance ToHttpApiData String where toUrlPiece = T.pack
518instance ToHttpApiData String where toUrlPiece = T.pack
@@ -630,7 +655,7 @@ instance FromHttpApiData ZonedTime where parseUrlPiece = runAtto Atto.zonedTime
630-- Right 2015-10-03 00:14:24 UTC
655-- Right 2015-10-03 00:14:24 UTC
631instance FromHttpApiData UTCTime where parseUrlPiece = runAtto Atto.utcTime
656instance FromHttpApiData UTCTime where parseUrlPiece = runAtto Atto.utcTime
633−instance FromHttpApiData NominalDiffTime where parseUrlPiece = fmap fromInteger . parseUrlPiece
658+instance FromHttpApiData NominalDiffTime where parseUrlPiece = fmap secsToNominalDiffTime . parseUrlPiece
635instance FromHttpApiData All where parseUrlPiece = fmap All . parseUrlPiece
660instance FromHttpApiData All where parseUrlPiece = fmap All . parseUrlPiece
636instance FromHttpApiData Any where parseUrlPiece = fmap Any . parseUrlPiece
661instance FromHttpApiData Any where parseUrlPiece = fmap Any . parseUrlPiece