amazonka-core 0.1.2 → 0.1.3
raw patch · 4 files changed
+42/−23 lines, 4 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Network.AWS.Types: _Errors :: Prism' (ServiceError a_aCM9) [ServiceError a_aCM9]
+ Network.AWS.Types: _Errors :: Prism' (ServiceError a_aCTO) [ServiceError a_aCTO]
- Network.AWS.Types: _HttpError :: Prism' (ServiceError a_aCM9) HttpException
+ Network.AWS.Types: _HttpError :: Prism' (ServiceError a_aCTO) HttpException
- Network.AWS.Types: _SerializerError :: Prism' (ServiceError a_aCM9) (Abbrev, String)
+ Network.AWS.Types: _SerializerError :: Prism' (ServiceError a_aCTO) (Abbrev, String)
- Network.AWS.Types: _ServiceError :: Prism' (ServiceError a_aCM9) (Abbrev, Status, a_aCM9)
+ Network.AWS.Types: _ServiceError :: Prism' (ServiceError a_aCTO) (Abbrev, Status, a_aCTO)
- Network.AWS.Types: rqBody :: Lens (Request a_aCLR) (Request a_aDW2) RqBody RqBody
+ Network.AWS.Types: rqBody :: Lens (Request a_aCTw) (Request a_aE3y) RqBody RqBody
- Network.AWS.Types: rqHeaders :: Lens (Request a_aCLR) (Request a_aDW3) [Header] [Header]
+ Network.AWS.Types: rqHeaders :: Lens (Request a_aCTw) (Request a_aE3z) [Header] [Header]
- Network.AWS.Types: rqMethod :: Lens (Request a_aCLR) (Request a_aDW4) StdMethod StdMethod
+ Network.AWS.Types: rqMethod :: Lens (Request a_aCTw) (Request a_aE3A) StdMethod StdMethod
- Network.AWS.Types: rqPath :: Lens (Request a_aCLR) (Request a_aDW5) ByteString ByteString
+ Network.AWS.Types: rqPath :: Lens (Request a_aCTw) (Request a_aE3B) ByteString ByteString
- Network.AWS.Types: rqQuery :: Lens (Request a_aCLR) (Request a_aDW6) Query Query
+ Network.AWS.Types: rqQuery :: Lens (Request a_aCTw) (Request a_aE3C) Query Query
Files
- amazonka-core.cabal +1/−1
- src/Network/AWS/Data/Internal/Numeric.hs +11/−6
- src/Network/AWS/Data/Internal/Text.hs +17/−13
- src/Network/AWS/Data/Internal/Time.hs +13/−3
amazonka-core.cabal view
@@ -1,5 +1,5 @@ name: amazonka-core-version: 0.1.2+version: 0.1.3 synopsis: Core functionality and data types for Amazonka libraries. homepage: https://github.com/brendanhay/amazonka license: OtherLicense
src/Network/AWS/Data/Internal/Numeric.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TemplateHaskell #-} -- Module : Network.AWS.Data.Internal.Numeric@@ -13,10 +14,10 @@ module Network.AWS.Data.Internal.Numeric where -import Control.Applicative import Control.Lens.TH import Control.Monad import Data.Aeson.Types+import Data.Monoid import Data.Scientific import Network.AWS.Data.Internal.ByteString import Network.AWS.Data.Internal.Query@@ -43,12 +44,16 @@ ) instance FromJSON Nat where- parseJSON = parseJSON >=> \n ->- case floatingOrInteger n of- Left _ -> fail $ "Cannot convert float to Natural: " ++ show n+ parseJSON = parseJSON >=> go+ where+ go n = case floatingOrInteger n of+ Left (_ :: Double) -> fail (floatErr n) Right i- | n < 0 -> fail $ "Cannot convert negative number to Natural: " ++ show n- | otherwise -> pure $ Nat (fromInteger i)+ | n < 0 -> fail (negateErr n)+ | otherwise -> return . Nat $ fromInteger i++ floatErr = mappend "Cannot convert float to Natural: " . show+ negateErr = mappend "Cannot convert negative number to Natural: " . show instance ToJSON Nat where toJSON = Number . flip scientific 0 . toInteger . unNat
src/Network/AWS/Data/Internal/Text.hs view
@@ -24,21 +24,23 @@ import Control.Applicative import Crypto.Hash-import Data.Attoparsec.Text (Parser)-import qualified Data.Attoparsec.Text as AText-import Data.ByteString (ByteString)-import Data.CaseInsensitive (CI)-import qualified Data.CaseInsensitive as CI+import Data.Attoparsec.Text (Parser)+import qualified Data.Attoparsec.Text as AText+import Data.ByteString (ByteString)+import Data.CaseInsensitive (CI)+import qualified Data.CaseInsensitive as CI import Data.Int import Data.Monoid-import Data.Text (Text)-import qualified Data.Text as Text-import qualified Data.Text.Encoding as Text-import qualified Data.Text.Lazy as LText-import Data.Text.Lazy.Builder (Builder)-import qualified Data.Text.Lazy.Builder as Build-import qualified Data.Text.Lazy.Builder.Int as Build-import qualified Data.Text.Lazy.Builder.RealFloat as Build+import Data.Scientific+import Data.Text (Text)+import qualified Data.Text as Text+import qualified Data.Text.Encoding as Text+import qualified Data.Text.Lazy as LText+import Data.Text.Lazy.Builder (Builder)+import qualified Data.Text.Lazy.Builder as Build+import qualified Data.Text.Lazy.Builder.Int as Build+import qualified Data.Text.Lazy.Builder.RealFloat as Build+import qualified Data.Text.Lazy.Builder.Scientific as Build import Network.HTTP.Client import Network.HTTP.Types import Numeric.Natural@@ -58,6 +60,7 @@ instance FromText ByteString where parser = Text.encodeUtf8 <$> AText.takeText instance FromText Int where parser = AText.decimal instance FromText Integer where parser = AText.decimal+instance FromText Scientific where parser = AText.scientific instance FromText Natural where parser = AText.decimal instance FromText Double where parser = AText.rational @@ -94,6 +97,7 @@ instance ToText Int64 where toText = shortText . Build.decimal instance ToText Integer where toText = shortText . Build.decimal instance ToText Natural where toText = shortText . Build.decimal+instance ToText Scientific where toText = shortText . Build.scientificBuilder instance ToText Double where toText = shortText . Build.realFloat instance ToText StdMethod where toText = toText . renderStdMethod instance ToText (Digest a) where toText = toText . digestToHexByteString
src/Network/AWS/Data/Internal/Time.hs view
@@ -37,6 +37,7 @@ import Data.Attoparsec.Text (Parser) import qualified Data.Attoparsec.Text as AText import qualified Data.ByteString.Char8 as BS+import Data.Scientific import Data.Tagged import qualified Data.Text as Text import Data.Time@@ -95,7 +96,7 @@ instance FromText POSIX where parser = Time . posixSecondsToUTCTime . realToFrac- <$> (parser :: Parser Integer)+ <$> (parser :: Parser Scientific) parseFormattedTime :: forall a. TimeFormat (Time a) => Parser (Time a) parseFormattedTime = do@@ -133,8 +134,14 @@ instance FromJSON ISO8601 where parseJSON = parseJSONText "ISO8601" instance FromJSON AWSTime where parseJSON = parseJSONText "AWSTime" instance FromJSON BasicTime where parseJSON = parseJSONText "BasicTime"-instance FromJSON POSIX where parseJSON = parseJSONText "POSIX" +instance FromJSON POSIX where+ parseJSON = withScientific "POSIX"+ $ pure+ . Time+ . posixSecondsToUTCTime+ . realToFrac+ instance ToByteString RFC822 where toBS = BS.pack . renderFormattedTime instance ToByteString ISO8601 where toBS = BS.pack . renderFormattedTime instance ToByteString BasicTime where toBS = BS.pack . renderFormattedTime@@ -155,4 +162,7 @@ instance ToJSON ISO8601 where toJSON = toJSONText instance ToJSON AWSTime where toJSON = toJSONText instance ToJSON BasicTime where toJSON = toJSONText-instance ToJSON POSIX where toJSON = toJSONText++instance ToJSON POSIX where+ toJSON (Time t) = Number $+ scientific (truncate (utcTimeToPOSIXSeconds t) :: Integer) 0