packages feed

amazonka-core 1.1.0 → 1.2.0

raw patch · 16 files changed

+471/−403 lines, 16 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Network.AWS.Data.Base64: [unBase64] :: Base64 -> ByteString
- Network.AWS.Data.Base64: instance Data.Aeson.Types.Class.FromJSON Network.AWS.Data.Base64.Base64
- Network.AWS.Data.Base64: instance Data.Aeson.Types.Class.ToJSON Network.AWS.Data.Base64.Base64
- Network.AWS.Data.Base64: instance Data.Data.Data Network.AWS.Data.Base64.Base64
- Network.AWS.Data.Base64: instance GHC.Classes.Eq Network.AWS.Data.Base64.Base64
- Network.AWS.Data.Base64: instance GHC.Classes.Ord Network.AWS.Data.Base64.Base64
- Network.AWS.Data.Base64: instance GHC.Generics.Constructor Network.AWS.Data.Base64.C1_0Base64
- Network.AWS.Data.Base64: instance GHC.Generics.Datatype Network.AWS.Data.Base64.D1Base64
- Network.AWS.Data.Base64: instance GHC.Generics.Generic Network.AWS.Data.Base64.Base64
- Network.AWS.Data.Base64: instance GHC.Generics.Selector Network.AWS.Data.Base64.S1_0_0Base64
- Network.AWS.Data.Base64: instance GHC.Read.Read Network.AWS.Data.Base64.Base64
- Network.AWS.Data.Base64: instance GHC.Show.Show Network.AWS.Data.Base64.Base64
- Network.AWS.Data.Base64: instance Network.AWS.Data.ByteString.ToByteString Network.AWS.Data.Base64.Base64
- Network.AWS.Data.Base64: instance Network.AWS.Data.Query.ToQuery Network.AWS.Data.Base64.Base64
- Network.AWS.Data.Base64: instance Network.AWS.Data.Text.FromText Network.AWS.Data.Base64.Base64
- Network.AWS.Data.Base64: instance Network.AWS.Data.Text.ToText Network.AWS.Data.Base64.Base64
- Network.AWS.Data.Base64: instance Network.AWS.Data.XML.FromXML Network.AWS.Data.Base64.Base64
- Network.AWS.Data.Base64: instance Network.AWS.Data.XML.ToXML Network.AWS.Data.Base64.Base64
- Network.AWS.Data.Body: [bodyRequest] :: RqBody -> RequestBody
- Network.AWS.Data.Body: [bodyResponse] :: RsBody -> ResumableSource (ResourceT IO) ByteString
- Network.AWS.Data.Body: [bodySHA256] :: RqBody -> Digest SHA256
- Network.AWS.Data.Body: instance Data.String.IsString Network.AWS.Data.Body.RqBody
- Network.AWS.Data.Body: instance GHC.Show.Show Network.AWS.Data.Body.RqBody
- Network.AWS.Data.Body: instance GHC.Show.Show Network.AWS.Data.Body.RsBody
- Network.AWS.Data.Body: instance Network.AWS.Data.Body.ToBody Data.Aeson.Types.Internal.Value
- Network.AWS.Data.Body: instance Network.AWS.Data.Body.ToBody Data.ByteString.Internal.ByteString
- Network.AWS.Data.Body: instance Network.AWS.Data.Body.ToBody Data.ByteString.Lazy.Internal.ByteString
- Network.AWS.Data.Body: instance Network.AWS.Data.Body.ToBody Data.Text.Internal.Lazy.Text
- Network.AWS.Data.Body: instance Network.AWS.Data.Body.ToBody Data.Text.Internal.Text
- Network.AWS.Data.Body: instance Network.AWS.Data.Body.ToBody Network.AWS.Data.Body.RqBody
- Network.AWS.Data.Body: instance Network.AWS.Data.Body.ToBody Network.AWS.Data.Query.QueryString
- Network.AWS.Data.Body: instance Network.AWS.Data.Body.ToBody Text.XML.Element
- Network.AWS.Data.ByteString: instance Network.AWS.Data.ByteString.ToByteString Data.ByteString.Builder.Internal.Builder
- Network.AWS.Data.ByteString: instance Network.AWS.Data.ByteString.ToByteString Data.ByteString.Internal.ByteString
- Network.AWS.Data.ByteString: instance Network.AWS.Data.ByteString.ToByteString Data.Text.Internal.Text
- Network.AWS.Data.ByteString: instance Network.AWS.Data.ByteString.ToByteString Data.Time.Clock.UTC.UTCTime
- Network.AWS.Data.ByteString: instance Network.AWS.Data.ByteString.ToByteString GHC.Base.String
- Network.AWS.Data.ByteString: instance Network.AWS.Data.ByteString.ToByteString GHC.Integer.Type.Integer
- Network.AWS.Data.ByteString: instance Network.AWS.Data.ByteString.ToByteString GHC.Natural.Natural
- Network.AWS.Data.ByteString: instance Network.AWS.Data.ByteString.ToByteString GHC.Types.Double
- Network.AWS.Data.ByteString: instance Network.AWS.Data.ByteString.ToByteString GHC.Types.Int
- Network.AWS.Data.ByteString: instance Network.AWS.Data.ByteString.ToByteString Network.AWS.Data.ByteString.LazyByteString
- Network.AWS.Data.ByteString: instance Network.AWS.Data.ByteString.ToByteString Network.HTTP.Types.Method.StdMethod
- Network.AWS.Data.ByteString: instance Network.AWS.Data.ByteString.ToByteString a => Network.AWS.Data.ByteString.ToByteString (Data.CaseInsensitive.Internal.CI a)
- Network.AWS.Data.Headers: instance Network.AWS.Data.Headers.ToHeader Data.ByteString.Internal.ByteString
- Network.AWS.Data.Headers: instance Network.AWS.Data.Headers.ToHeader Data.Text.Internal.Text
- Network.AWS.Data.Headers: instance Network.AWS.Data.Text.ToText a => Network.AWS.Data.Headers.ToHeader (GHC.Base.Maybe a)
- Network.AWS.Data.JSON: toEncoding :: ToJSON a => a -> Encoding
- Network.AWS.Data.List1: [toNonEmpty] :: List1 a -> NonEmpty a
- Network.AWS.Data.List1: instance Data.Aeson.Types.Class.FromJSON a => Data.Aeson.Types.Class.FromJSON (Network.AWS.Data.List1.List1 a)
- Network.AWS.Data.List1: instance Data.Aeson.Types.Class.ToJSON a => Data.Aeson.Types.Class.ToJSON (Network.AWS.Data.List1.List1 a)
- Network.AWS.Data.List1: instance Data.Data.Data a => Data.Data.Data (Network.AWS.Data.List1.List1 a)
- Network.AWS.Data.List1: instance Data.Foldable.Foldable Network.AWS.Data.List1.List1
- Network.AWS.Data.List1: instance Data.Semigroup.Semigroup (Network.AWS.Data.List1.List1 a)
- Network.AWS.Data.List1: instance Data.Traversable.Traversable Network.AWS.Data.List1.List1
- Network.AWS.Data.List1: instance GHC.Base.Applicative Network.AWS.Data.List1.List1
- Network.AWS.Data.List1: instance GHC.Base.Functor Network.AWS.Data.List1.List1
- Network.AWS.Data.List1: instance GHC.Base.Monad Network.AWS.Data.List1.List1
- Network.AWS.Data.List1: instance GHC.Classes.Eq a => GHC.Classes.Eq (Network.AWS.Data.List1.List1 a)
- Network.AWS.Data.List1: instance GHC.Classes.Ord a => GHC.Classes.Ord (Network.AWS.Data.List1.List1 a)
- Network.AWS.Data.List1: instance GHC.Exts.IsList (Network.AWS.Data.List1.List1 a)
- Network.AWS.Data.List1: instance GHC.Generics.Constructor Network.AWS.Data.List1.C1_0List1
- Network.AWS.Data.List1: instance GHC.Generics.Datatype Network.AWS.Data.List1.D1List1
- Network.AWS.Data.List1: instance GHC.Generics.Generic (Network.AWS.Data.List1.List1 a)
- Network.AWS.Data.List1: instance GHC.Generics.Selector Network.AWS.Data.List1.S1_0_0List1
- Network.AWS.Data.List1: instance GHC.Read.Read a => GHC.Read.Read (Network.AWS.Data.List1.List1 a)
- Network.AWS.Data.List1: instance GHC.Show.Show a => GHC.Show.Show (Network.AWS.Data.List1.List1 a)
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog (Network.HTTP.Client.Types.Response a)
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog Data.ByteString.Builder.Internal.Builder
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog Data.ByteString.Internal.ByteString
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog Data.ByteString.Lazy.Internal.ByteString
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog Data.Text.Internal.Lazy.Text
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog Data.Text.Internal.Text
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog Data.Time.Clock.UTC.UTCTime
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog GHC.Int.Int16
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog GHC.Int.Int32
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog GHC.Int.Int64
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog GHC.Int.Int8
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog GHC.Integer.Type.Integer
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog GHC.Types.Bool
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog GHC.Types.Char
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog GHC.Types.Double
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog GHC.Types.Float
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog GHC.Types.Int
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog GHC.Types.Word
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog GHC.Word.Word16
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog GHC.Word.Word32
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog GHC.Word.Word64
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog GHC.Word.Word8
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog Network.AWS.Data.Path.EscapedPath
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog Network.AWS.Data.Query.QueryString
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog Network.HTTP.Client.Types.HttpException
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog Network.HTTP.Client.Types.Request
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog Network.HTTP.Client.Types.RequestBody
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog Network.HTTP.Types.Method.StdMethod
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog Network.HTTP.Types.Status.Status
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog Network.HTTP.Types.Version.HttpVersion
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog [GHC.Types.Char]
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog [Network.HTTP.Types.Header.Header]
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog a => Network.AWS.Data.Log.ToLog (Data.CaseInsensitive.Internal.CI a)
- Network.AWS.Data.Log: instance Network.AWS.Data.Log.ToLog a => Network.AWS.Data.Log.ToLog (GHC.Base.Maybe a)
- Network.AWS.Data.Map: [toMap] :: Map k v -> HashMap k v
- Network.AWS.Data.Map: instance (Data.Hashable.Class.Hashable k, GHC.Classes.Eq k) => GHC.Exts.IsList (Network.AWS.Data.Map.Map k v)
- Network.AWS.Data.Map: instance (GHC.Classes.Eq k, Data.Data.Data k, Data.Data.Data v, Data.Hashable.Class.Hashable k) => Data.Data.Data (Network.AWS.Data.Map.Map k v)
- Network.AWS.Data.Map: instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Data.Semigroup.Semigroup (Network.AWS.Data.Map.Map k v)
- Network.AWS.Data.Map: instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => GHC.Base.Monoid (Network.AWS.Data.Map.Map k v)
- Network.AWS.Data.Map: instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k, Network.AWS.Data.ByteString.ToByteString k, Network.AWS.Data.Text.ToText v) => Network.AWS.Data.Headers.ToHeader (Network.AWS.Data.Map.Map k v)
- Network.AWS.Data.Map: instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k, Network.AWS.Data.Text.FromText k, Data.Aeson.Types.Class.FromJSON v) => Data.Aeson.Types.Class.FromJSON (Network.AWS.Data.Map.Map k v)
- Network.AWS.Data.Map: instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k, Network.AWS.Data.Text.ToText k, Data.Aeson.Types.Class.ToJSON v) => Data.Aeson.Types.Class.ToJSON (Network.AWS.Data.Map.Map k v)
- Network.AWS.Data.Map: instance (GHC.Classes.Eq k, GHC.Classes.Eq v) => GHC.Classes.Eq (Network.AWS.Data.Map.Map k v)
- Network.AWS.Data.Map: instance (GHC.Classes.Eq k, GHC.Read.Read k, GHC.Read.Read v, Data.Hashable.Class.Hashable k) => GHC.Read.Read (Network.AWS.Data.Map.Map k v)
- Network.AWS.Data.Map: instance (GHC.Show.Show k, GHC.Show.Show v) => GHC.Show.Show (Network.AWS.Data.Map.Map k v)
- Network.AWS.Data.Map: instance Data.Foldable.Foldable (Network.AWS.Data.Map.Map k)
- Network.AWS.Data.Map: instance Data.Traversable.Traversable (Network.AWS.Data.Map.Map k)
- Network.AWS.Data.Map: instance GHC.Base.Functor (Network.AWS.Data.Map.Map k)
- Network.AWS.Data.Map: instance GHC.Generics.Constructor Network.AWS.Data.Map.C1_0Map
- Network.AWS.Data.Map: instance GHC.Generics.Datatype Network.AWS.Data.Map.D1Map
- Network.AWS.Data.Map: instance GHC.Generics.Generic (Network.AWS.Data.Map.Map k v)
- Network.AWS.Data.Map: instance GHC.Generics.Selector Network.AWS.Data.Map.S1_0_0Map
- Network.AWS.Data.Numeric: [unNat] :: Nat -> Natural
- Network.AWS.Data.Numeric: instance Data.Aeson.Types.Class.FromJSON Network.AWS.Data.Numeric.Nat
- Network.AWS.Data.Numeric: instance Data.Aeson.Types.Class.ToJSON Network.AWS.Data.Numeric.Nat
- Network.AWS.Data.Numeric: instance Data.Data.Data Network.AWS.Data.Numeric.Nat
- Network.AWS.Data.Numeric: instance GHC.Classes.Eq Network.AWS.Data.Numeric.Nat
- Network.AWS.Data.Numeric: instance GHC.Classes.Ord Network.AWS.Data.Numeric.Nat
- Network.AWS.Data.Numeric: instance GHC.Enum.Enum Network.AWS.Data.Numeric.Nat
- Network.AWS.Data.Numeric: instance GHC.Generics.Constructor Network.AWS.Data.Numeric.C1_0Nat
- Network.AWS.Data.Numeric: instance GHC.Generics.Datatype Network.AWS.Data.Numeric.D1Nat
- Network.AWS.Data.Numeric: instance GHC.Generics.Generic Network.AWS.Data.Numeric.Nat
- Network.AWS.Data.Numeric: instance GHC.Generics.Selector Network.AWS.Data.Numeric.S1_0_0Nat
- Network.AWS.Data.Numeric: instance GHC.Num.Num Network.AWS.Data.Numeric.Nat
- Network.AWS.Data.Numeric: instance GHC.Read.Read Network.AWS.Data.Numeric.Nat
- Network.AWS.Data.Numeric: instance GHC.Real.Integral Network.AWS.Data.Numeric.Nat
- Network.AWS.Data.Numeric: instance GHC.Real.Real Network.AWS.Data.Numeric.Nat
- Network.AWS.Data.Numeric: instance GHC.Show.Show Network.AWS.Data.Numeric.Nat
- Network.AWS.Data.Numeric: instance Network.AWS.Data.ByteString.ToByteString Network.AWS.Data.Numeric.Nat
- Network.AWS.Data.Numeric: instance Network.AWS.Data.Query.ToQuery Network.AWS.Data.Numeric.Nat
- Network.AWS.Data.Numeric: instance Network.AWS.Data.Text.FromText Network.AWS.Data.Numeric.Nat
- Network.AWS.Data.Numeric: instance Network.AWS.Data.Text.ToText Network.AWS.Data.Numeric.Nat
- Network.AWS.Data.Numeric: instance Network.AWS.Data.XML.FromXML Network.AWS.Data.Numeric.Nat
- Network.AWS.Data.Numeric: instance Network.AWS.Data.XML.ToXML Network.AWS.Data.Numeric.Nat
- Network.AWS.Data.Path: instance GHC.Base.Monoid Network.AWS.Data.Path.RawPath
- Network.AWS.Data.Path: instance GHC.Classes.Eq (Network.AWS.Data.Path.Path a)
- Network.AWS.Data.Path: instance GHC.Classes.Eq Network.AWS.Data.Path.Encoding
- Network.AWS.Data.Path: instance GHC.Show.Show (Network.AWS.Data.Path.Path a)
- Network.AWS.Data.Path: instance GHC.Show.Show Network.AWS.Data.Path.Encoding
- Network.AWS.Data.Path: instance Network.AWS.Data.ByteString.ToByteString Network.AWS.Data.Path.EscapedPath
- Network.AWS.Data.Path: instance Network.AWS.Data.Path.ToPath Data.ByteString.Internal.ByteString
- Network.AWS.Data.Path: instance Network.AWS.Data.Path.ToPath Data.Text.Internal.Text
- Network.AWS.Data.Query: instance (Network.AWS.Data.ByteString.ToByteString k, Network.AWS.Data.Query.ToQuery v) => Network.AWS.Data.Query.ToQuery (k, v)
- Network.AWS.Data.Query: instance Data.Data.Data Network.AWS.Data.Query.QueryString
- Network.AWS.Data.Query: instance Data.String.IsString Network.AWS.Data.Query.QueryString
- Network.AWS.Data.Query: instance GHC.Base.Monoid Network.AWS.Data.Query.QueryString
- Network.AWS.Data.Query: instance GHC.Classes.Eq Network.AWS.Data.Query.QueryString
- Network.AWS.Data.Query: instance GHC.Show.Show Network.AWS.Data.Query.QueryString
- Network.AWS.Data.Query: instance Network.AWS.Data.ByteString.ToByteString Network.AWS.Data.Query.QueryString
- Network.AWS.Data.Query: instance Network.AWS.Data.Query.ToQuery Data.ByteString.Internal.ByteString
- Network.AWS.Data.Query: instance Network.AWS.Data.Query.ToQuery Data.Text.Internal.Text
- Network.AWS.Data.Query: instance Network.AWS.Data.Query.ToQuery GHC.Integer.Type.Integer
- Network.AWS.Data.Query: instance Network.AWS.Data.Query.ToQuery GHC.Natural.Natural
- Network.AWS.Data.Query: instance Network.AWS.Data.Query.ToQuery GHC.Types.Bool
- Network.AWS.Data.Query: instance Network.AWS.Data.Query.ToQuery GHC.Types.Char
- Network.AWS.Data.Query: instance Network.AWS.Data.Query.ToQuery GHC.Types.Double
- Network.AWS.Data.Query: instance Network.AWS.Data.Query.ToQuery GHC.Types.Int
- Network.AWS.Data.Query: instance Network.AWS.Data.Query.ToQuery Network.AWS.Data.Query.QueryString
- Network.AWS.Data.Query: instance Network.AWS.Data.Query.ToQuery a => Network.AWS.Data.Query.ToQuery (GHC.Base.Maybe a)
- Network.AWS.Data.Sensitive: [desensitise] :: Sensitive a -> a
- Network.AWS.Data.Sensitive: instance Data.Aeson.Types.Class.FromJSON a => Data.Aeson.Types.Class.FromJSON (Network.AWS.Data.Sensitive.Sensitive a)
- Network.AWS.Data.Sensitive: instance Data.Aeson.Types.Class.ToJSON a => Data.Aeson.Types.Class.ToJSON (Network.AWS.Data.Sensitive.Sensitive a)
- Network.AWS.Data.Sensitive: instance Data.Data.Data a => Data.Data.Data (Network.AWS.Data.Sensitive.Sensitive a)
- Network.AWS.Data.Sensitive: instance Data.String.IsString a => Data.String.IsString (Network.AWS.Data.Sensitive.Sensitive a)
- Network.AWS.Data.Sensitive: instance GHC.Base.Monoid a => GHC.Base.Monoid (Network.AWS.Data.Sensitive.Sensitive a)
- Network.AWS.Data.Sensitive: instance GHC.Classes.Eq a => GHC.Classes.Eq (Network.AWS.Data.Sensitive.Sensitive a)
- Network.AWS.Data.Sensitive: instance GHC.Classes.Ord a => GHC.Classes.Ord (Network.AWS.Data.Sensitive.Sensitive a)
- Network.AWS.Data.Sensitive: instance GHC.Generics.Constructor Network.AWS.Data.Sensitive.C1_0Sensitive
- Network.AWS.Data.Sensitive: instance GHC.Generics.Datatype Network.AWS.Data.Sensitive.D1Sensitive
- Network.AWS.Data.Sensitive: instance GHC.Generics.Generic (Network.AWS.Data.Sensitive.Sensitive a)
- Network.AWS.Data.Sensitive: instance GHC.Generics.Selector Network.AWS.Data.Sensitive.S1_0_0Sensitive
- Network.AWS.Data.Sensitive: instance GHC.Read.Read a => GHC.Read.Read (Network.AWS.Data.Sensitive.Sensitive a)
- Network.AWS.Data.Sensitive: instance GHC.Show.Show (Network.AWS.Data.Sensitive.Sensitive a)
- Network.AWS.Data.Sensitive: instance Network.AWS.Data.ByteString.ToByteString a => Network.AWS.Data.ByteString.ToByteString (Network.AWS.Data.Sensitive.Sensitive a)
- Network.AWS.Data.Sensitive: instance Network.AWS.Data.Query.ToQuery a => Network.AWS.Data.Query.ToQuery (Network.AWS.Data.Sensitive.Sensitive a)
- Network.AWS.Data.Sensitive: instance Network.AWS.Data.Text.FromText a => Network.AWS.Data.Text.FromText (Network.AWS.Data.Sensitive.Sensitive a)
- Network.AWS.Data.Sensitive: instance Network.AWS.Data.Text.ToText a => Network.AWS.Data.Text.ToText (Network.AWS.Data.Sensitive.Sensitive a)
- Network.AWS.Data.Sensitive: instance Network.AWS.Data.XML.FromXML a => Network.AWS.Data.XML.FromXML (Network.AWS.Data.Sensitive.Sensitive a)
- Network.AWS.Data.Sensitive: instance Network.AWS.Data.XML.ToXML a => Network.AWS.Data.XML.ToXML (Network.AWS.Data.Sensitive.Sensitive a)
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.FromText Data.ByteString.Internal.ByteString
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.FromText Data.Scientific.Scientific
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.FromText Data.Text.Internal.Text
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.FromText GHC.Integer.Type.Integer
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.FromText GHC.Natural.Natural
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.FromText GHC.Types.Bool
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.FromText GHC.Types.Char
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.FromText GHC.Types.Double
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.FromText GHC.Types.Int
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.FromText Network.HTTP.Types.Method.StdMethod
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.ToText (Crypto.Hash.Types.Digest a)
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.ToText Data.ByteString.Internal.ByteString
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.ToText Data.Scientific.Scientific
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.ToText Data.Text.Internal.Text
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.ToText GHC.Base.String
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.ToText GHC.Int.Int64
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.ToText GHC.Integer.Type.Integer
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.ToText GHC.Natural.Natural
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.ToText GHC.Types.Bool
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.ToText GHC.Types.Char
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.ToText GHC.Types.Double
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.ToText GHC.Types.Int
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.ToText Network.HTTP.Types.Method.StdMethod
- Network.AWS.Data.Text: instance Network.AWS.Data.Text.ToText a => Network.AWS.Data.Text.ToText (Data.CaseInsensitive.Internal.CI a)
- Network.AWS.Data.Text: matchCI :: Text -> a -> Parser a
- Network.AWS.Data.Time: instance Data.Aeson.Types.Class.FromJSON Network.AWS.Data.Time.AWSTime
- Network.AWS.Data.Time: instance Data.Aeson.Types.Class.FromJSON Network.AWS.Data.Time.BasicTime
- Network.AWS.Data.Time: instance Data.Aeson.Types.Class.FromJSON Network.AWS.Data.Time.ISO8601
- Network.AWS.Data.Time: instance Data.Aeson.Types.Class.FromJSON Network.AWS.Data.Time.POSIX
- Network.AWS.Data.Time: instance Data.Aeson.Types.Class.FromJSON Network.AWS.Data.Time.RFC822
- Network.AWS.Data.Time: instance Data.Aeson.Types.Class.ToJSON Network.AWS.Data.Time.AWSTime
- Network.AWS.Data.Time: instance Data.Aeson.Types.Class.ToJSON Network.AWS.Data.Time.BasicTime
- Network.AWS.Data.Time: instance Data.Aeson.Types.Class.ToJSON Network.AWS.Data.Time.ISO8601
- Network.AWS.Data.Time: instance Data.Aeson.Types.Class.ToJSON Network.AWS.Data.Time.POSIX
- Network.AWS.Data.Time: instance Data.Aeson.Types.Class.ToJSON Network.AWS.Data.Time.RFC822
- Network.AWS.Data.Time: instance Data.Data.Data Network.AWS.Data.Time.Format
- Network.AWS.Data.Time: instance Data.Typeable.Internal.Typeable a => Data.Data.Data (Network.AWS.Data.Time.Time a)
- Network.AWS.Data.Time: instance GHC.Classes.Eq (Network.AWS.Data.Time.Time a)
- Network.AWS.Data.Time: instance GHC.Classes.Eq Network.AWS.Data.Time.Format
- Network.AWS.Data.Time: instance GHC.Classes.Ord (Network.AWS.Data.Time.Time a)
- Network.AWS.Data.Time: instance GHC.Generics.Constructor Network.AWS.Data.Time.C1_0Format
- Network.AWS.Data.Time: instance GHC.Generics.Constructor Network.AWS.Data.Time.C1_0Time
- Network.AWS.Data.Time: instance GHC.Generics.Constructor Network.AWS.Data.Time.C1_1Format
- Network.AWS.Data.Time: instance GHC.Generics.Constructor Network.AWS.Data.Time.C1_2Format
- Network.AWS.Data.Time: instance GHC.Generics.Constructor Network.AWS.Data.Time.C1_3Format
- Network.AWS.Data.Time: instance GHC.Generics.Constructor Network.AWS.Data.Time.C1_4Format
- Network.AWS.Data.Time: instance GHC.Generics.Datatype Network.AWS.Data.Time.D1Format
- Network.AWS.Data.Time: instance GHC.Generics.Datatype Network.AWS.Data.Time.D1Time
- Network.AWS.Data.Time: instance GHC.Generics.Generic (Network.AWS.Data.Time.Time a)
- Network.AWS.Data.Time: instance GHC.Generics.Generic Network.AWS.Data.Time.Format
- Network.AWS.Data.Time: instance GHC.Read.Read (Network.AWS.Data.Time.Time a)
- Network.AWS.Data.Time: instance GHC.Read.Read Network.AWS.Data.Time.Format
- Network.AWS.Data.Time: instance GHC.Show.Show (Network.AWS.Data.Time.Time a)
- Network.AWS.Data.Time: instance GHC.Show.Show Network.AWS.Data.Time.Format
- Network.AWS.Data.Time: instance Network.AWS.Data.ByteString.ToByteString Network.AWS.Data.Time.AWSTime
- Network.AWS.Data.Time: instance Network.AWS.Data.ByteString.ToByteString Network.AWS.Data.Time.BasicTime
- Network.AWS.Data.Time: instance Network.AWS.Data.ByteString.ToByteString Network.AWS.Data.Time.ISO8601
- Network.AWS.Data.Time: instance Network.AWS.Data.ByteString.ToByteString Network.AWS.Data.Time.RFC822
- Network.AWS.Data.Time: instance Network.AWS.Data.Query.ToQuery Network.AWS.Data.Time.AWSTime
- Network.AWS.Data.Time: instance Network.AWS.Data.Query.ToQuery Network.AWS.Data.Time.BasicTime
- Network.AWS.Data.Time: instance Network.AWS.Data.Query.ToQuery Network.AWS.Data.Time.ISO8601
- Network.AWS.Data.Time: instance Network.AWS.Data.Query.ToQuery Network.AWS.Data.Time.RFC822
- Network.AWS.Data.Time: instance Network.AWS.Data.Text.FromText Network.AWS.Data.Time.AWSTime
- Network.AWS.Data.Time: instance Network.AWS.Data.Text.FromText Network.AWS.Data.Time.BasicTime
- Network.AWS.Data.Time: instance Network.AWS.Data.Text.FromText Network.AWS.Data.Time.ISO8601
- Network.AWS.Data.Time: instance Network.AWS.Data.Text.FromText Network.AWS.Data.Time.POSIX
- Network.AWS.Data.Time: instance Network.AWS.Data.Text.FromText Network.AWS.Data.Time.RFC822
- Network.AWS.Data.Time: instance Network.AWS.Data.Text.ToText Network.AWS.Data.Time.AWSTime
- Network.AWS.Data.Time: instance Network.AWS.Data.Text.ToText Network.AWS.Data.Time.BasicTime
- Network.AWS.Data.Time: instance Network.AWS.Data.Text.ToText Network.AWS.Data.Time.ISO8601
- Network.AWS.Data.Time: instance Network.AWS.Data.Text.ToText Network.AWS.Data.Time.POSIX
- Network.AWS.Data.Time: instance Network.AWS.Data.Text.ToText Network.AWS.Data.Time.RFC822
- Network.AWS.Data.Time: instance Network.AWS.Data.Time.TimeFormat Network.AWS.Data.Time.AWSTime
- Network.AWS.Data.Time: instance Network.AWS.Data.Time.TimeFormat Network.AWS.Data.Time.BasicTime
- Network.AWS.Data.Time: instance Network.AWS.Data.Time.TimeFormat Network.AWS.Data.Time.ISO8601
- Network.AWS.Data.Time: instance Network.AWS.Data.Time.TimeFormat Network.AWS.Data.Time.RFC822
- Network.AWS.Data.Time: instance Network.AWS.Data.XML.FromXML Network.AWS.Data.Time.AWSTime
- Network.AWS.Data.Time: instance Network.AWS.Data.XML.FromXML Network.AWS.Data.Time.BasicTime
- Network.AWS.Data.Time: instance Network.AWS.Data.XML.FromXML Network.AWS.Data.Time.ISO8601
- Network.AWS.Data.Time: instance Network.AWS.Data.XML.FromXML Network.AWS.Data.Time.POSIX
- Network.AWS.Data.Time: instance Network.AWS.Data.XML.FromXML Network.AWS.Data.Time.RFC822
- Network.AWS.Data.Time: instance Network.AWS.Data.XML.ToXML Network.AWS.Data.Time.AWSTime
- Network.AWS.Data.Time: instance Network.AWS.Data.XML.ToXML Network.AWS.Data.Time.BasicTime
- Network.AWS.Data.Time: instance Network.AWS.Data.XML.ToXML Network.AWS.Data.Time.ISO8601
- Network.AWS.Data.Time: instance Network.AWS.Data.XML.ToXML Network.AWS.Data.Time.POSIX
- Network.AWS.Data.Time: instance Network.AWS.Data.XML.ToXML Network.AWS.Data.Time.RFC822
- Network.AWS.Data.XML: instance GHC.Base.Monoid Network.AWS.Data.XML.XML
- Network.AWS.Data.XML: instance GHC.Show.Show Network.AWS.Data.XML.XML
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.FromXML Data.ByteString.Internal.ByteString
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.FromXML Data.Text.Internal.Text
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.FromXML GHC.Integer.Type.Integer
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.FromXML GHC.Natural.Natural
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.FromXML GHC.Types.Bool
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.FromXML GHC.Types.Char
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.FromXML GHC.Types.Double
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.FromXML GHC.Types.Int
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.FromXML [Text.XML.Node]
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.FromXML a => Network.AWS.Data.XML.FromXML (GHC.Base.Maybe a)
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.ToElement Text.XML.Element
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.ToXML Data.ByteString.Internal.ByteString
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.ToXML Data.Text.Internal.Text
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.ToXML GHC.Integer.Type.Integer
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.ToXML GHC.Natural.Natural
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.ToXML GHC.Types.Bool
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.ToXML GHC.Types.Double
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.ToXML GHC.Types.Int
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.ToXML Network.AWS.Data.XML.XML
- Network.AWS.Data.XML: instance Network.AWS.Data.XML.ToXML a => Network.AWS.Data.XML.ToXML (GHC.Base.Maybe a)
- Network.AWS.Pager: instance Network.AWS.Pager.AWSTruncated (Data.HashMap.Base.HashMap k v)
- Network.AWS.Pager: instance Network.AWS.Pager.AWSTruncated (GHC.Base.Maybe Data.Text.Internal.Text)
- Network.AWS.Pager: instance Network.AWS.Pager.AWSTruncated (GHC.Base.Maybe GHC.Types.Bool)
- Network.AWS.Pager: instance Network.AWS.Pager.AWSTruncated GHC.Types.Bool
- Network.AWS.Pager: instance Network.AWS.Pager.AWSTruncated [a]
- Network.AWS.Sign.V2: data V2
- Network.AWS.Sign.V2: instance Network.AWS.Data.Log.ToLog (Network.AWS.Types.Meta Network.AWS.Sign.V2.V2)
- Network.AWS.Sign.V2: instance Network.AWS.Types.AWSSigner Network.AWS.Sign.V2.V2
- Network.AWS.Sign.V4: instance Network.AWS.Data.ByteString.ToByteString (Network.AWS.Sign.V4.Tag s Data.ByteString.Internal.ByteString)
- Network.AWS.Sign.V4: instance Network.AWS.Data.ByteString.ToByteString Network.AWS.Sign.V4.CredentialScope
- Network.AWS.Sign.V4: instance Network.AWS.Data.Log.ToLog (Network.AWS.Sign.V4.Tag s Data.ByteString.Internal.ByteString)
- Network.AWS.Sign.V4: instance Network.AWS.Data.Log.ToLog (Network.AWS.Types.Meta Network.AWS.Sign.V4.V4)
- Network.AWS.Sign.V4: instance Network.AWS.Types.AWSPresigner Network.AWS.Sign.V4.V4
- Network.AWS.Sign.V4: instance Network.AWS.Types.AWSSigner Network.AWS.Sign.V4.V4
- Network.AWS.Types: ErrorCode :: Text -> ErrorCode
- Network.AWS.Types: [_authAccess] :: AuthEnv -> !AccessKey
- Network.AWS.Types: [_authExpiry] :: AuthEnv -> Maybe UTCTime
- Network.AWS.Types: [_authSecret] :: AuthEnv -> !SecretKey
- Network.AWS.Types: [_authToken] :: AuthEnv -> Maybe SessionToken
- Network.AWS.Types: [_endpointHost] :: Endpoint -> ByteString
- Network.AWS.Types: [_endpointScope] :: Endpoint -> ByteString
- Network.AWS.Types: [_retryAttempts] :: Retry -> !Int
- Network.AWS.Types: [_retryBase] :: Retry -> !Double
- Network.AWS.Types: [_retryCheck] :: Retry -> ServiceError -> Maybe Text
- Network.AWS.Types: [_retryGrowth] :: Retry -> !Int
- Network.AWS.Types: [_rqBody] :: Request a -> !RqBody
- Network.AWS.Types: [_rqHeaders] :: Request a -> ![Header]
- Network.AWS.Types: [_rqMethod] :: Request a -> !StdMethod
- Network.AWS.Types: [_rqPath] :: Request a -> !RawPath
- Network.AWS.Types: [_rqQuery] :: Request a -> !QueryString
- Network.AWS.Types: [_serializeAbbrev] :: SerializeError -> !Abbrev
- Network.AWS.Types: [_serializeMessage] :: SerializeError -> String
- Network.AWS.Types: [_serializeStatus] :: SerializeError -> !Status
- Network.AWS.Types: [_serviceAbbrev] :: ServiceError -> !Abbrev
- Network.AWS.Types: [_serviceCode] :: ServiceError -> !ErrorCode
- Network.AWS.Types: [_serviceHeaders] :: ServiceError -> [Header]
- Network.AWS.Types: [_serviceMessage] :: ServiceError -> Maybe ErrorMessage
- Network.AWS.Types: [_serviceRequestId] :: ServiceError -> Maybe RequestId
- Network.AWS.Types: [_serviceStatus] :: ServiceError -> !Status
- Network.AWS.Types: [_sgMeta] :: Signed v a -> Meta v
- Network.AWS.Types: [_sgRequest] :: Signed v a -> ClientRequest
- Network.AWS.Types: [_svcAbbrev] :: Service s -> !Abbrev
- Network.AWS.Types: [_svcEndpoint] :: Service s -> Region -> Endpoint
- Network.AWS.Types: [_svcError] :: Service s -> Abbrev -> Status -> [Header] -> LazyByteString -> Error
- Network.AWS.Types: [_svcPrefix] :: Service s -> ByteString
- Network.AWS.Types: [_svcRetry] :: Service s -> Retry
- Network.AWS.Types: [_svcStatus] :: Service s -> Status -> Bool
- Network.AWS.Types: [_svcTimeout] :: Service s -> Maybe Seconds
- Network.AWS.Types: [_svcVersion] :: Service s -> ByteString
- Network.AWS.Types: _Seconds :: Iso' Seconds Int
- Network.AWS.Types: class AWSPresigner v
- Network.AWS.Types: class AWSSigner (Sg a) => AWSService a where type family Sg a :: *
- Network.AWS.Types: class AWSSigner v
- Network.AWS.Types: instance Data.Aeson.Types.Class.FromJSON Network.AWS.Types.Abbrev
- Network.AWS.Types: instance Data.Aeson.Types.Class.FromJSON Network.AWS.Types.AuthEnv
- Network.AWS.Types: instance Data.Aeson.Types.Class.FromJSON Network.AWS.Types.ErrorCode
- Network.AWS.Types: instance Data.Aeson.Types.Class.FromJSON Network.AWS.Types.ErrorMessage
- Network.AWS.Types: instance Data.Aeson.Types.Class.FromJSON Network.AWS.Types.RequestId
- Network.AWS.Types: instance Data.Data.Data Network.AWS.Types.Endpoint
- Network.AWS.Types: instance Data.Data.Data Network.AWS.Types.LogLevel
- Network.AWS.Types: instance Data.Data.Data Network.AWS.Types.Region
- Network.AWS.Types: instance Data.Data.Data Network.AWS.Types.Seconds
- Network.AWS.Types: instance Data.Hashable.Class.Hashable Network.AWS.Types.Region
- Network.AWS.Types: instance Data.String.IsString Network.AWS.Types.Abbrev
- Network.AWS.Types: instance Data.String.IsString Network.AWS.Types.AccessKey
- Network.AWS.Types: instance Data.String.IsString Network.AWS.Types.ErrorCode
- Network.AWS.Types: instance Data.String.IsString Network.AWS.Types.ErrorMessage
- Network.AWS.Types: instance Data.String.IsString Network.AWS.Types.RequestId
- Network.AWS.Types: instance Data.String.IsString Network.AWS.Types.SecretKey
- Network.AWS.Types: instance Data.String.IsString Network.AWS.Types.SessionToken
- Network.AWS.Types: instance GHC.Classes.Eq Network.AWS.Types.Abbrev
- Network.AWS.Types: instance GHC.Classes.Eq Network.AWS.Types.AccessKey
- Network.AWS.Types: instance GHC.Classes.Eq Network.AWS.Types.Endpoint
- Network.AWS.Types: instance GHC.Classes.Eq Network.AWS.Types.ErrorCode
- Network.AWS.Types: instance GHC.Classes.Eq Network.AWS.Types.ErrorMessage
- Network.AWS.Types: instance GHC.Classes.Eq Network.AWS.Types.LogLevel
- Network.AWS.Types: instance GHC.Classes.Eq Network.AWS.Types.Region
- Network.AWS.Types: instance GHC.Classes.Eq Network.AWS.Types.RequestId
- Network.AWS.Types: instance GHC.Classes.Eq Network.AWS.Types.Seconds
- Network.AWS.Types: instance GHC.Classes.Eq Network.AWS.Types.SecretKey
- Network.AWS.Types: instance GHC.Classes.Eq Network.AWS.Types.SerializeError
- Network.AWS.Types: instance GHC.Classes.Eq Network.AWS.Types.ServiceError
- Network.AWS.Types: instance GHC.Classes.Eq Network.AWS.Types.SessionToken
- Network.AWS.Types: instance GHC.Classes.Ord Network.AWS.Types.Abbrev
- Network.AWS.Types: instance GHC.Classes.Ord Network.AWS.Types.ErrorCode
- Network.AWS.Types: instance GHC.Classes.Ord Network.AWS.Types.ErrorMessage
- Network.AWS.Types: instance GHC.Classes.Ord Network.AWS.Types.LogLevel
- Network.AWS.Types: instance GHC.Classes.Ord Network.AWS.Types.Region
- Network.AWS.Types: instance GHC.Classes.Ord Network.AWS.Types.RequestId
- Network.AWS.Types: instance GHC.Classes.Ord Network.AWS.Types.Seconds
- Network.AWS.Types: instance GHC.Enum.Bounded Network.AWS.Types.Seconds
- Network.AWS.Types: instance GHC.Enum.Enum Network.AWS.Types.LogLevel
- Network.AWS.Types: instance GHC.Enum.Enum Network.AWS.Types.Seconds
- Network.AWS.Types: instance GHC.Exception.Exception Network.AWS.Types.Error
- Network.AWS.Types: instance GHC.Generics.Constructor Network.AWS.Types.C1_0Region
- Network.AWS.Types: instance GHC.Generics.Constructor Network.AWS.Types.C1_0Seconds
- Network.AWS.Types: instance GHC.Generics.Constructor Network.AWS.Types.C1_10Region
- Network.AWS.Types: instance GHC.Generics.Constructor Network.AWS.Types.C1_11Region
- Network.AWS.Types: instance GHC.Generics.Constructor Network.AWS.Types.C1_1Region
- Network.AWS.Types: instance GHC.Generics.Constructor Network.AWS.Types.C1_2Region
- Network.AWS.Types: instance GHC.Generics.Constructor Network.AWS.Types.C1_3Region
- Network.AWS.Types: instance GHC.Generics.Constructor Network.AWS.Types.C1_4Region
- Network.AWS.Types: instance GHC.Generics.Constructor Network.AWS.Types.C1_5Region
- Network.AWS.Types: instance GHC.Generics.Constructor Network.AWS.Types.C1_6Region
- Network.AWS.Types: instance GHC.Generics.Constructor Network.AWS.Types.C1_7Region
- Network.AWS.Types: instance GHC.Generics.Constructor Network.AWS.Types.C1_8Region
- Network.AWS.Types: instance GHC.Generics.Constructor Network.AWS.Types.C1_9Region
- Network.AWS.Types: instance GHC.Generics.Datatype Network.AWS.Types.D1Region
- Network.AWS.Types: instance GHC.Generics.Datatype Network.AWS.Types.D1Seconds
- Network.AWS.Types: instance GHC.Generics.Generic Network.AWS.Types.Region
- Network.AWS.Types: instance GHC.Generics.Generic Network.AWS.Types.Seconds
- Network.AWS.Types: instance GHC.Num.Num Network.AWS.Types.Seconds
- Network.AWS.Types: instance GHC.Read.Read Network.AWS.Types.Region
- Network.AWS.Types: instance GHC.Read.Read Network.AWS.Types.Seconds
- Network.AWS.Types: instance GHC.Real.Integral Network.AWS.Types.Seconds
- Network.AWS.Types: instance GHC.Real.Real Network.AWS.Types.Seconds
- Network.AWS.Types: instance GHC.Show.Show (Network.AWS.Types.Request a)
- Network.AWS.Types: instance GHC.Show.Show Network.AWS.Types.Abbrev
- Network.AWS.Types: instance GHC.Show.Show Network.AWS.Types.AccessKey
- Network.AWS.Types: instance GHC.Show.Show Network.AWS.Types.Endpoint
- Network.AWS.Types: instance GHC.Show.Show Network.AWS.Types.Error
- Network.AWS.Types: instance GHC.Show.Show Network.AWS.Types.ErrorCode
- Network.AWS.Types: instance GHC.Show.Show Network.AWS.Types.ErrorMessage
- Network.AWS.Types: instance GHC.Show.Show Network.AWS.Types.LogLevel
- Network.AWS.Types: instance GHC.Show.Show Network.AWS.Types.Region
- Network.AWS.Types: instance GHC.Show.Show Network.AWS.Types.RequestId
- Network.AWS.Types: instance GHC.Show.Show Network.AWS.Types.Seconds
- Network.AWS.Types: instance GHC.Show.Show Network.AWS.Types.SerializeError
- Network.AWS.Types: instance GHC.Show.Show Network.AWS.Types.ServiceError
- Network.AWS.Types: instance Network.AWS.Data.ByteString.ToByteString Network.AWS.Types.AccessKey
- Network.AWS.Types: instance Network.AWS.Data.ByteString.ToByteString Network.AWS.Types.Region
- Network.AWS.Types: instance Network.AWS.Data.ByteString.ToByteString Network.AWS.Types.Seconds
- Network.AWS.Types: instance Network.AWS.Data.ByteString.ToByteString Network.AWS.Types.SecretKey
- Network.AWS.Types: instance Network.AWS.Data.ByteString.ToByteString Network.AWS.Types.SessionToken
- Network.AWS.Types: instance Network.AWS.Data.Log.ToLog (Network.AWS.Types.Request a)
- Network.AWS.Types: instance Network.AWS.Data.Log.ToLog Network.AWS.Types.Abbrev
- Network.AWS.Types: instance Network.AWS.Data.Log.ToLog Network.AWS.Types.AccessKey
- Network.AWS.Types: instance Network.AWS.Data.Log.ToLog Network.AWS.Types.Auth
- Network.AWS.Types: instance Network.AWS.Data.Log.ToLog Network.AWS.Types.AuthEnv
- Network.AWS.Types: instance Network.AWS.Data.Log.ToLog Network.AWS.Types.Error
- Network.AWS.Types: instance Network.AWS.Data.Log.ToLog Network.AWS.Types.ErrorCode
- Network.AWS.Types: instance Network.AWS.Data.Log.ToLog Network.AWS.Types.ErrorMessage
- Network.AWS.Types: instance Network.AWS.Data.Log.ToLog Network.AWS.Types.Region
- Network.AWS.Types: instance Network.AWS.Data.Log.ToLog Network.AWS.Types.RequestId
- Network.AWS.Types: instance Network.AWS.Data.Log.ToLog Network.AWS.Types.Seconds
- Network.AWS.Types: instance Network.AWS.Data.Log.ToLog Network.AWS.Types.SerializeError
- Network.AWS.Types: instance Network.AWS.Data.Log.ToLog Network.AWS.Types.ServiceError
- Network.AWS.Types: instance Network.AWS.Data.Query.ToQuery Network.AWS.Types.Seconds
- Network.AWS.Types: instance Network.AWS.Data.Text.FromText Network.AWS.Types.Abbrev
- Network.AWS.Types: instance Network.AWS.Data.Text.FromText Network.AWS.Types.ErrorCode
- Network.AWS.Types: instance Network.AWS.Data.Text.FromText Network.AWS.Types.ErrorMessage
- Network.AWS.Types: instance Network.AWS.Data.Text.FromText Network.AWS.Types.Region
- Network.AWS.Types: instance Network.AWS.Data.Text.FromText Network.AWS.Types.RequestId
- Network.AWS.Types: instance Network.AWS.Data.Text.ToText Network.AWS.Types.Abbrev
- Network.AWS.Types: instance Network.AWS.Data.Text.ToText Network.AWS.Types.AccessKey
- Network.AWS.Types: instance Network.AWS.Data.Text.ToText Network.AWS.Types.ErrorCode
- Network.AWS.Types: instance Network.AWS.Data.Text.ToText Network.AWS.Types.ErrorMessage
- Network.AWS.Types: instance Network.AWS.Data.Text.ToText Network.AWS.Types.Region
- Network.AWS.Types: instance Network.AWS.Data.Text.ToText Network.AWS.Types.RequestId
- Network.AWS.Types: instance Network.AWS.Data.Text.ToText Network.AWS.Types.Seconds
- Network.AWS.Types: instance Network.AWS.Data.Text.ToText Network.AWS.Types.SecretKey
- Network.AWS.Types: instance Network.AWS.Data.Text.ToText Network.AWS.Types.SessionToken
- Network.AWS.Types: instance Network.AWS.Data.XML.FromXML Network.AWS.Types.Abbrev
- Network.AWS.Types: instance Network.AWS.Data.XML.FromXML Network.AWS.Types.ErrorCode
- Network.AWS.Types: instance Network.AWS.Data.XML.FromXML Network.AWS.Types.ErrorMessage
- Network.AWS.Types: instance Network.AWS.Data.XML.FromXML Network.AWS.Types.Region
- Network.AWS.Types: instance Network.AWS.Data.XML.FromXML Network.AWS.Types.RequestId
- Network.AWS.Types: instance Network.AWS.Data.XML.ToXML Network.AWS.Types.Region
- Network.AWS.Types: instance Network.AWS.Types.AsError GHC.Exception.SomeException
- Network.AWS.Types: instance Network.AWS.Types.AsError Network.AWS.Types.Error
- Network.AWS.Types: newtype ErrorCode
- Network.AWS.Types: presigned :: (AWSPresigner v, v ~ Sg s) => AuthEnv -> Region -> UTCTime -> Seconds -> Service s -> Request a -> Signed v a
- Network.AWS.Types: service :: (AWSService a, Sv p ~ a) => Proxy p -> Service a
- Network.AWS.Types: serviceOf :: AWSService (Sv a) => a -> Service (Sv a)
- Network.AWS.Types: signed :: (AWSSigner v, v ~ Sg s) => AuthEnv -> Region -> UTCTime -> Service s -> Request a -> Signed v a
- Network.AWS.Waiter: [_waitAcceptors] :: Wait a -> [Acceptor a]
- Network.AWS.Waiter: [_waitAttempts] :: Wait a -> !Int
- Network.AWS.Waiter: [_waitDelay] :: Wait a -> !Seconds
- Network.AWS.Waiter: [_waitName] :: Wait a -> ByteString
- Network.AWS.Waiter: instance GHC.Classes.Eq Network.AWS.Waiter.Accept
- Network.AWS.Waiter: instance GHC.Show.Show Network.AWS.Waiter.Accept
- Network.AWS.Waiter: instance Network.AWS.Data.Log.ToLog Network.AWS.Waiter.Accept
+ Network.AWS.Data.Base64: instance Constructor C1_0Base64
+ Network.AWS.Data.Base64: instance Data Base64
+ Network.AWS.Data.Base64: instance Datatype D1Base64
+ Network.AWS.Data.Base64: instance Eq Base64
+ Network.AWS.Data.Base64: instance FromJSON Base64
+ Network.AWS.Data.Base64: instance FromText Base64
+ Network.AWS.Data.Base64: instance FromXML Base64
+ Network.AWS.Data.Base64: instance Generic Base64
+ Network.AWS.Data.Base64: instance Ord Base64
+ Network.AWS.Data.Base64: instance Read Base64
+ Network.AWS.Data.Base64: instance Selector S1_0_0Base64
+ Network.AWS.Data.Base64: instance Show Base64
+ Network.AWS.Data.Base64: instance ToByteString Base64
+ Network.AWS.Data.Base64: instance ToJSON Base64
+ Network.AWS.Data.Base64: instance ToQuery Base64
+ Network.AWS.Data.Base64: instance ToText Base64
+ Network.AWS.Data.Base64: instance ToXML Base64
+ Network.AWS.Data.Base64: instance Typeable Base64
+ Network.AWS.Data.Base64: unBase64 :: Base64 -> ByteString
+ Network.AWS.Data.Body: bodyRequest :: RqBody -> RequestBody
+ Network.AWS.Data.Body: bodyResponse :: RsBody -> ResumableSource (ResourceT IO) ByteString
+ Network.AWS.Data.Body: bodySHA256 :: RqBody -> Digest SHA256
+ Network.AWS.Data.Body: instance IsString RqBody
+ Network.AWS.Data.Body: instance Show RqBody
+ Network.AWS.Data.Body: instance Show RsBody
+ Network.AWS.Data.Body: instance ToBody ByteString
+ Network.AWS.Data.Body: instance ToBody Element
+ Network.AWS.Data.Body: instance ToBody QueryString
+ Network.AWS.Data.Body: instance ToBody RqBody
+ Network.AWS.Data.Body: instance ToBody Text
+ Network.AWS.Data.Body: instance ToBody Value
+ Network.AWS.Data.ByteString: instance ToByteString Builder
+ Network.AWS.Data.ByteString: instance ToByteString ByteString
+ Network.AWS.Data.ByteString: instance ToByteString Double
+ Network.AWS.Data.ByteString: instance ToByteString Int
+ Network.AWS.Data.ByteString: instance ToByteString Integer
+ Network.AWS.Data.ByteString: instance ToByteString LazyByteString
+ Network.AWS.Data.ByteString: instance ToByteString Natural
+ Network.AWS.Data.ByteString: instance ToByteString StdMethod
+ Network.AWS.Data.ByteString: instance ToByteString String
+ Network.AWS.Data.ByteString: instance ToByteString Text
+ Network.AWS.Data.ByteString: instance ToByteString UTCTime
+ Network.AWS.Data.ByteString: instance ToByteString a => ToByteString (CI a)
+ Network.AWS.Data.Headers: hContentType :: HeaderName
+ Network.AWS.Data.Headers: hFormEncoded :: ByteString
+ Network.AWS.Data.Headers: instance ToHeader ByteString
+ Network.AWS.Data.Headers: instance ToHeader Text
+ Network.AWS.Data.Headers: instance ToText a => ToHeader (Maybe a)
+ Network.AWS.Data.List1: instance Applicative List1
+ Network.AWS.Data.List1: instance Constructor C1_0List1
+ Network.AWS.Data.List1: instance Data a => Data (List1 a)
+ Network.AWS.Data.List1: instance Datatype D1List1
+ Network.AWS.Data.List1: instance Eq a => Eq (List1 a)
+ Network.AWS.Data.List1: instance Foldable List1
+ Network.AWS.Data.List1: instance FromJSON a => FromJSON (List1 a)
+ Network.AWS.Data.List1: instance Functor List1
+ Network.AWS.Data.List1: instance Generic (List1 a)
+ Network.AWS.Data.List1: instance IsList (List1 a)
+ Network.AWS.Data.List1: instance Monad List1
+ Network.AWS.Data.List1: instance Ord a => Ord (List1 a)
+ Network.AWS.Data.List1: instance Read a => Read (List1 a)
+ Network.AWS.Data.List1: instance Selector S1_0_0List1
+ Network.AWS.Data.List1: instance Semigroup (List1 a)
+ Network.AWS.Data.List1: instance Show a => Show (List1 a)
+ Network.AWS.Data.List1: instance ToJSON a => ToJSON (List1 a)
+ Network.AWS.Data.List1: instance Traversable List1
+ Network.AWS.Data.List1: instance Typeable List1
+ Network.AWS.Data.List1: toNonEmpty :: List1 a -> NonEmpty a
+ Network.AWS.Data.Log: instance ToLog (Response a)
+ Network.AWS.Data.Log: instance ToLog Bool
+ Network.AWS.Data.Log: instance ToLog Builder
+ Network.AWS.Data.Log: instance ToLog ByteString
+ Network.AWS.Data.Log: instance ToLog Char
+ Network.AWS.Data.Log: instance ToLog Double
+ Network.AWS.Data.Log: instance ToLog EscapedPath
+ Network.AWS.Data.Log: instance ToLog Float
+ Network.AWS.Data.Log: instance ToLog HttpException
+ Network.AWS.Data.Log: instance ToLog HttpVersion
+ Network.AWS.Data.Log: instance ToLog Int
+ Network.AWS.Data.Log: instance ToLog Int16
+ Network.AWS.Data.Log: instance ToLog Int32
+ Network.AWS.Data.Log: instance ToLog Int64
+ Network.AWS.Data.Log: instance ToLog Int8
+ Network.AWS.Data.Log: instance ToLog Integer
+ Network.AWS.Data.Log: instance ToLog QueryString
+ Network.AWS.Data.Log: instance ToLog Request
+ Network.AWS.Data.Log: instance ToLog RequestBody
+ Network.AWS.Data.Log: instance ToLog Status
+ Network.AWS.Data.Log: instance ToLog StdMethod
+ Network.AWS.Data.Log: instance ToLog Text
+ Network.AWS.Data.Log: instance ToLog UTCTime
+ Network.AWS.Data.Log: instance ToLog Word
+ Network.AWS.Data.Log: instance ToLog Word16
+ Network.AWS.Data.Log: instance ToLog Word32
+ Network.AWS.Data.Log: instance ToLog Word64
+ Network.AWS.Data.Log: instance ToLog Word8
+ Network.AWS.Data.Log: instance ToLog [Char]
+ Network.AWS.Data.Log: instance ToLog [Header]
+ Network.AWS.Data.Log: instance ToLog a => ToLog (CI a)
+ Network.AWS.Data.Log: instance ToLog a => ToLog (Maybe a)
+ Network.AWS.Data.Map: instance (Eq k, Data k, Data v, Hashable k) => Data (Map k v)
+ Network.AWS.Data.Map: instance (Eq k, Eq v) => Eq (Map k v)
+ Network.AWS.Data.Map: instance (Eq k, Hashable k) => Monoid (Map k v)
+ Network.AWS.Data.Map: instance (Eq k, Hashable k) => Semigroup (Map k v)
+ Network.AWS.Data.Map: instance (Eq k, Hashable k, FromText k, FromJSON v) => FromJSON (Map k v)
+ Network.AWS.Data.Map: instance (Eq k, Hashable k, ToByteString k, ToText v) => ToHeader (Map k v)
+ Network.AWS.Data.Map: instance (Eq k, Hashable k, ToText k, ToJSON v) => ToJSON (Map k v)
+ Network.AWS.Data.Map: instance (Eq k, Read k, Read v, Hashable k) => Read (Map k v)
+ Network.AWS.Data.Map: instance (Hashable k, Eq k) => IsList (Map k v)
+ Network.AWS.Data.Map: instance (Show k, Show v) => Show (Map k v)
+ Network.AWS.Data.Map: instance Constructor C1_0Map
+ Network.AWS.Data.Map: instance Datatype D1Map
+ Network.AWS.Data.Map: instance Foldable (Map k)
+ Network.AWS.Data.Map: instance Functor (Map k)
+ Network.AWS.Data.Map: instance Generic (Map k v)
+ Network.AWS.Data.Map: instance Selector S1_0_0Map
+ Network.AWS.Data.Map: instance Traversable (Map k)
+ Network.AWS.Data.Map: instance Typeable Map
+ Network.AWS.Data.Map: toMap :: Map k v -> HashMap k v
+ Network.AWS.Data.Numeric: instance Constructor C1_0Nat
+ Network.AWS.Data.Numeric: instance Data Nat
+ Network.AWS.Data.Numeric: instance Datatype D1Nat
+ Network.AWS.Data.Numeric: instance Enum Nat
+ Network.AWS.Data.Numeric: instance Eq Nat
+ Network.AWS.Data.Numeric: instance FromJSON Nat
+ Network.AWS.Data.Numeric: instance FromText Nat
+ Network.AWS.Data.Numeric: instance FromXML Nat
+ Network.AWS.Data.Numeric: instance Generic Nat
+ Network.AWS.Data.Numeric: instance Integral Nat
+ Network.AWS.Data.Numeric: instance Num Nat
+ Network.AWS.Data.Numeric: instance Ord Nat
+ Network.AWS.Data.Numeric: instance Read Nat
+ Network.AWS.Data.Numeric: instance Real Nat
+ Network.AWS.Data.Numeric: instance Selector S1_0_0Nat
+ Network.AWS.Data.Numeric: instance Show Nat
+ Network.AWS.Data.Numeric: instance ToByteString Nat
+ Network.AWS.Data.Numeric: instance ToJSON Nat
+ Network.AWS.Data.Numeric: instance ToQuery Nat
+ Network.AWS.Data.Numeric: instance ToText Nat
+ Network.AWS.Data.Numeric: instance ToXML Nat
+ Network.AWS.Data.Numeric: instance Typeable Nat
+ Network.AWS.Data.Numeric: unNat :: Nat -> Natural
+ Network.AWS.Data.Path: instance Eq (Path a)
+ Network.AWS.Data.Path: instance Eq Encoding
+ Network.AWS.Data.Path: instance Monoid RawPath
+ Network.AWS.Data.Path: instance Show (Path a)
+ Network.AWS.Data.Path: instance Show Encoding
+ Network.AWS.Data.Path: instance ToByteString EscapedPath
+ Network.AWS.Data.Path: instance ToPath ByteString
+ Network.AWS.Data.Path: instance ToPath Text
+ Network.AWS.Data.Query: instance (ToByteString k, ToQuery v) => ToQuery (k, v)
+ Network.AWS.Data.Query: instance Data QueryString
+ Network.AWS.Data.Query: instance Eq QueryString
+ Network.AWS.Data.Query: instance IsString QueryString
+ Network.AWS.Data.Query: instance Monoid QueryString
+ Network.AWS.Data.Query: instance Show QueryString
+ Network.AWS.Data.Query: instance ToByteString QueryString
+ Network.AWS.Data.Query: instance ToQuery Bool
+ Network.AWS.Data.Query: instance ToQuery ByteString
+ Network.AWS.Data.Query: instance ToQuery Char
+ Network.AWS.Data.Query: instance ToQuery Double
+ Network.AWS.Data.Query: instance ToQuery Int
+ Network.AWS.Data.Query: instance ToQuery Integer
+ Network.AWS.Data.Query: instance ToQuery Natural
+ Network.AWS.Data.Query: instance ToQuery QueryString
+ Network.AWS.Data.Query: instance ToQuery Text
+ Network.AWS.Data.Query: instance ToQuery a => ToQuery (Maybe a)
+ Network.AWS.Data.Query: instance Typeable QueryString
+ Network.AWS.Data.Sensitive: desensitise :: Sensitive a -> a
+ Network.AWS.Data.Sensitive: instance Constructor C1_0Sensitive
+ Network.AWS.Data.Sensitive: instance Data a => Data (Sensitive a)
+ Network.AWS.Data.Sensitive: instance Datatype D1Sensitive
+ Network.AWS.Data.Sensitive: instance Eq a => Eq (Sensitive a)
+ Network.AWS.Data.Sensitive: instance FromJSON a => FromJSON (Sensitive a)
+ Network.AWS.Data.Sensitive: instance FromText a => FromText (Sensitive a)
+ Network.AWS.Data.Sensitive: instance FromXML a => FromXML (Sensitive a)
+ Network.AWS.Data.Sensitive: instance Generic (Sensitive a)
+ Network.AWS.Data.Sensitive: instance IsString a => IsString (Sensitive a)
+ Network.AWS.Data.Sensitive: instance Monoid a => Monoid (Sensitive a)
+ Network.AWS.Data.Sensitive: instance Ord a => Ord (Sensitive a)
+ Network.AWS.Data.Sensitive: instance Read a => Read (Sensitive a)
+ Network.AWS.Data.Sensitive: instance Selector S1_0_0Sensitive
+ Network.AWS.Data.Sensitive: instance Show (Sensitive a)
+ Network.AWS.Data.Sensitive: instance ToByteString a => ToByteString (Sensitive a)
+ Network.AWS.Data.Sensitive: instance ToJSON a => ToJSON (Sensitive a)
+ Network.AWS.Data.Sensitive: instance ToQuery a => ToQuery (Sensitive a)
+ Network.AWS.Data.Sensitive: instance ToText a => ToText (Sensitive a)
+ Network.AWS.Data.Sensitive: instance ToXML a => ToXML (Sensitive a)
+ Network.AWS.Data.Sensitive: instance Typeable Sensitive
+ Network.AWS.Data.Text: instance FromText Bool
+ Network.AWS.Data.Text: instance FromText ByteString
+ Network.AWS.Data.Text: instance FromText Char
+ Network.AWS.Data.Text: instance FromText Double
+ Network.AWS.Data.Text: instance FromText Int
+ Network.AWS.Data.Text: instance FromText Integer
+ Network.AWS.Data.Text: instance FromText Natural
+ Network.AWS.Data.Text: instance FromText Scientific
+ Network.AWS.Data.Text: instance FromText StdMethod
+ Network.AWS.Data.Text: instance FromText Text
+ Network.AWS.Data.Text: instance ToText (Digest a)
+ Network.AWS.Data.Text: instance ToText Bool
+ Network.AWS.Data.Text: instance ToText ByteString
+ Network.AWS.Data.Text: instance ToText Char
+ Network.AWS.Data.Text: instance ToText Double
+ Network.AWS.Data.Text: instance ToText Int
+ Network.AWS.Data.Text: instance ToText Int64
+ Network.AWS.Data.Text: instance ToText Integer
+ Network.AWS.Data.Text: instance ToText Natural
+ Network.AWS.Data.Text: instance ToText Scientific
+ Network.AWS.Data.Text: instance ToText StdMethod
+ Network.AWS.Data.Text: instance ToText String
+ Network.AWS.Data.Text: instance ToText Text
+ Network.AWS.Data.Text: instance ToText a => ToText (CI a)
+ Network.AWS.Data.Time: instance Constructor C1_0Format
+ Network.AWS.Data.Time: instance Constructor C1_0Time
+ Network.AWS.Data.Time: instance Constructor C1_1Format
+ Network.AWS.Data.Time: instance Constructor C1_2Format
+ Network.AWS.Data.Time: instance Constructor C1_3Format
+ Network.AWS.Data.Time: instance Constructor C1_4Format
+ Network.AWS.Data.Time: instance Data Format
+ Network.AWS.Data.Time: instance Datatype D1Format
+ Network.AWS.Data.Time: instance Datatype D1Time
+ Network.AWS.Data.Time: instance Eq (Time a)
+ Network.AWS.Data.Time: instance Eq Format
+ Network.AWS.Data.Time: instance FromJSON AWSTime
+ Network.AWS.Data.Time: instance FromJSON BasicTime
+ Network.AWS.Data.Time: instance FromJSON ISO8601
+ Network.AWS.Data.Time: instance FromJSON POSIX
+ Network.AWS.Data.Time: instance FromJSON RFC822
+ Network.AWS.Data.Time: instance FromText AWSTime
+ Network.AWS.Data.Time: instance FromText BasicTime
+ Network.AWS.Data.Time: instance FromText ISO8601
+ Network.AWS.Data.Time: instance FromText POSIX
+ Network.AWS.Data.Time: instance FromText RFC822
+ Network.AWS.Data.Time: instance FromXML AWSTime
+ Network.AWS.Data.Time: instance FromXML BasicTime
+ Network.AWS.Data.Time: instance FromXML ISO8601
+ Network.AWS.Data.Time: instance FromXML POSIX
+ Network.AWS.Data.Time: instance FromXML RFC822
+ Network.AWS.Data.Time: instance Generic (Time $a)
+ Network.AWS.Data.Time: instance Generic Format
+ Network.AWS.Data.Time: instance Ord (Time a)
+ Network.AWS.Data.Time: instance Read (Time a)
+ Network.AWS.Data.Time: instance Read Format
+ Network.AWS.Data.Time: instance Show (Time a)
+ Network.AWS.Data.Time: instance Show Format
+ Network.AWS.Data.Time: instance TimeFormat AWSTime
+ Network.AWS.Data.Time: instance TimeFormat BasicTime
+ Network.AWS.Data.Time: instance TimeFormat ISO8601
+ Network.AWS.Data.Time: instance TimeFormat RFC822
+ Network.AWS.Data.Time: instance ToByteString AWSTime
+ Network.AWS.Data.Time: instance ToByteString BasicTime
+ Network.AWS.Data.Time: instance ToByteString ISO8601
+ Network.AWS.Data.Time: instance ToByteString RFC822
+ Network.AWS.Data.Time: instance ToJSON AWSTime
+ Network.AWS.Data.Time: instance ToJSON BasicTime
+ Network.AWS.Data.Time: instance ToJSON ISO8601
+ Network.AWS.Data.Time: instance ToJSON POSIX
+ Network.AWS.Data.Time: instance ToJSON RFC822
+ Network.AWS.Data.Time: instance ToQuery AWSTime
+ Network.AWS.Data.Time: instance ToQuery BasicTime
+ Network.AWS.Data.Time: instance ToQuery ISO8601
+ Network.AWS.Data.Time: instance ToQuery RFC822
+ Network.AWS.Data.Time: instance ToText AWSTime
+ Network.AWS.Data.Time: instance ToText BasicTime
+ Network.AWS.Data.Time: instance ToText ISO8601
+ Network.AWS.Data.Time: instance ToText POSIX
+ Network.AWS.Data.Time: instance ToText RFC822
+ Network.AWS.Data.Time: instance ToXML AWSTime
+ Network.AWS.Data.Time: instance ToXML BasicTime
+ Network.AWS.Data.Time: instance ToXML ISO8601
+ Network.AWS.Data.Time: instance ToXML POSIX
+ Network.AWS.Data.Time: instance ToXML RFC822
+ Network.AWS.Data.Time: instance Typeable $a => Data (Time $a)
+ Network.AWS.Data.Time: instance Typeable 'AWSFormat
+ Network.AWS.Data.Time: instance Typeable 'BasicFormat
+ Network.AWS.Data.Time: instance Typeable 'ISO8601Format
+ Network.AWS.Data.Time: instance Typeable 'POSIXFormat
+ Network.AWS.Data.Time: instance Typeable 'RFC822Format
+ Network.AWS.Data.Time: instance Typeable Format
+ Network.AWS.Data.Time: instance Typeable Time
+ Network.AWS.Data.XML: instance FromXML Bool
+ Network.AWS.Data.XML: instance FromXML ByteString
+ Network.AWS.Data.XML: instance FromXML Char
+ Network.AWS.Data.XML: instance FromXML Double
+ Network.AWS.Data.XML: instance FromXML Int
+ Network.AWS.Data.XML: instance FromXML Integer
+ Network.AWS.Data.XML: instance FromXML Natural
+ Network.AWS.Data.XML: instance FromXML Text
+ Network.AWS.Data.XML: instance FromXML [Node]
+ Network.AWS.Data.XML: instance FromXML a => FromXML (Maybe a)
+ Network.AWS.Data.XML: instance Monoid XML
+ Network.AWS.Data.XML: instance Show XML
+ Network.AWS.Data.XML: instance ToElement Element
+ Network.AWS.Data.XML: instance ToXML Bool
+ Network.AWS.Data.XML: instance ToXML ByteString
+ Network.AWS.Data.XML: instance ToXML Double
+ Network.AWS.Data.XML: instance ToXML Int
+ Network.AWS.Data.XML: instance ToXML Integer
+ Network.AWS.Data.XML: instance ToXML Natural
+ Network.AWS.Data.XML: instance ToXML Text
+ Network.AWS.Data.XML: instance ToXML XML
+ Network.AWS.Data.XML: instance ToXML a => ToXML (Maybe a)
+ Network.AWS.Endpoint: setEndpoint :: Bool -> ByteString -> Int -> Service -> Service
+ Network.AWS.Pager: instance AWSTruncated (HashMap k v)
+ Network.AWS.Pager: instance AWSTruncated (Maybe Bool)
+ Network.AWS.Pager: instance AWSTruncated (Maybe Text)
+ Network.AWS.Pager: instance AWSTruncated Bool
+ Network.AWS.Pager: instance AWSTruncated [a]
+ Network.AWS.Sign.V2: instance ToLog V2
+ Network.AWS.Sign.V2: v2 :: Signer
+ Network.AWS.Sign.V4: V4 :: !UTCTime -> !Method -> !Path -> !Endpoint -> !Credential -> !CanonicalQuery -> !CanonicalRequest -> !CanonicalHeaders -> !SignedHeaders -> !StringToSign -> !Signature -> ![Header] -> RequestBody -> !(Maybe Seconds) -> V4
+ Network.AWS.Sign.V4: instance ToByteString (Tag s ByteString)
+ Network.AWS.Sign.V4: instance ToByteString CredentialScope
+ Network.AWS.Sign.V4: instance ToLog (Tag s ByteString)
+ Network.AWS.Sign.V4: instance ToLog V4
+ Network.AWS.Sign.V4: metaBody :: V4 -> RequestBody
+ Network.AWS.Sign.V4: metaCanonicalHeaders :: V4 -> !CanonicalHeaders
+ Network.AWS.Sign.V4: metaCanonicalQuery :: V4 -> !CanonicalQuery
+ Network.AWS.Sign.V4: metaCanonicalRequest :: V4 -> !CanonicalRequest
+ Network.AWS.Sign.V4: metaCredential :: V4 -> !Credential
+ Network.AWS.Sign.V4: metaEndpoint :: V4 -> !Endpoint
+ Network.AWS.Sign.V4: metaHeaders :: V4 -> ![Header]
+ Network.AWS.Sign.V4: metaMethod :: V4 -> !Method
+ Network.AWS.Sign.V4: metaPath :: V4 -> !Path
+ Network.AWS.Sign.V4: metaSignature :: V4 -> !Signature
+ Network.AWS.Sign.V4: metaSignedHeaders :: V4 -> !SignedHeaders
+ Network.AWS.Sign.V4: metaStringToSign :: V4 -> !StringToSign
+ Network.AWS.Sign.V4: metaTime :: V4 -> !UTCTime
+ Network.AWS.Sign.V4: metaTimeout :: V4 -> !(Maybe Seconds)
+ Network.AWS.Sign.V4: metadata :: AuthEnv -> Region -> UTCTime -> (Credential -> SignedHeaders -> QueryString -> QueryString) -> Hash -> Request a -> V4
+ Network.AWS.Sign.V4: v4 :: Signer
+ Network.AWS.Types: Meta :: a -> Meta
+ Network.AWS.Types: Signer :: (forall a. Algorithm a) -> (forall a. Seconds -> Algorithm a) -> Signer
+ Network.AWS.Types: _authAccess :: AuthEnv -> !AccessKey
+ Network.AWS.Types: _authExpiry :: AuthEnv -> Maybe UTCTime
+ Network.AWS.Types: _authSecret :: AuthEnv -> !SecretKey
+ Network.AWS.Types: _authToken :: AuthEnv -> Maybe SessionToken
+ Network.AWS.Types: _endpointHost :: Endpoint -> ByteString
+ Network.AWS.Types: _endpointPort :: Endpoint -> !Int
+ Network.AWS.Types: _endpointScope :: Endpoint -> ByteString
+ Network.AWS.Types: _endpointSecure :: Endpoint -> !Bool
+ Network.AWS.Types: _retryAttempts :: Retry -> !Int
+ Network.AWS.Types: _retryBase :: Retry -> !Double
+ Network.AWS.Types: _retryCheck :: Retry -> ServiceError -> Maybe Text
+ Network.AWS.Types: _retryGrowth :: Retry -> !Int
+ Network.AWS.Types: _rqBody :: Request a -> !RqBody
+ Network.AWS.Types: _rqHeaders :: Request a -> ![Header]
+ Network.AWS.Types: _rqMethod :: Request a -> !StdMethod
+ Network.AWS.Types: _rqPath :: Request a -> !RawPath
+ Network.AWS.Types: _rqQuery :: Request a -> !QueryString
+ Network.AWS.Types: _rqService :: Request a -> !Service
+ Network.AWS.Types: _serializeAbbrev :: SerializeError -> !Abbrev
+ Network.AWS.Types: _serializeMessage :: SerializeError -> String
+ Network.AWS.Types: _serializeStatus :: SerializeError -> !Status
+ Network.AWS.Types: _serviceAbbrev :: ServiceError -> !Abbrev
+ Network.AWS.Types: _serviceCode :: ServiceError -> !ErrorCode
+ Network.AWS.Types: _serviceHeaders :: ServiceError -> [Header]
+ Network.AWS.Types: _serviceMessage :: ServiceError -> Maybe ErrorMessage
+ Network.AWS.Types: _serviceRequestId :: ServiceError -> Maybe RequestId
+ Network.AWS.Types: _serviceStatus :: ServiceError -> !Status
+ Network.AWS.Types: _svcAbbrev :: Service -> !Abbrev
+ Network.AWS.Types: _svcCheck :: Service -> !(Status -> Bool)
+ Network.AWS.Types: _svcEndpoint :: Service -> !(Region -> Endpoint)
+ Network.AWS.Types: _svcError :: Service -> !(Abbrev -> Status -> [Header] -> LazyByteString -> Error)
+ Network.AWS.Types: _svcPrefix :: Service -> !ByteString
+ Network.AWS.Types: _svcRetry :: Service -> !Retry
+ Network.AWS.Types: _svcSigner :: Service -> !Signer
+ Network.AWS.Types: _svcTimeout :: Service -> !(Maybe Seconds)
+ Network.AWS.Types: _svcVersion :: Service -> !ByteString
+ Network.AWS.Types: data ErrorCode
+ Network.AWS.Types: data Meta
+ Network.AWS.Types: data Signer
+ Network.AWS.Types: endpointHost :: Lens' Endpoint ByteString
+ Network.AWS.Types: endpointPort :: Lens' Endpoint Int
+ Network.AWS.Types: endpointScope :: Lens' Endpoint ByteString
+ Network.AWS.Types: endpointSecure :: Lens' Endpoint Bool
+ Network.AWS.Types: errorCode :: Text -> ErrorCode
+ Network.AWS.Types: exponentBase :: Lens' Retry Double
+ Network.AWS.Types: exponentGrowth :: Lens' Retry Int
+ Network.AWS.Types: instance AsError Error
+ Network.AWS.Types: instance AsError SomeException
+ Network.AWS.Types: instance Bounded Seconds
+ Network.AWS.Types: instance Constructor C1_0Region
+ Network.AWS.Types: instance Constructor C1_0Seconds
+ Network.AWS.Types: instance Constructor C1_10Region
+ Network.AWS.Types: instance Constructor C1_11Region
+ Network.AWS.Types: instance Constructor C1_1Region
+ Network.AWS.Types: instance Constructor C1_2Region
+ Network.AWS.Types: instance Constructor C1_3Region
+ Network.AWS.Types: instance Constructor C1_4Region
+ Network.AWS.Types: instance Constructor C1_5Region
+ Network.AWS.Types: instance Constructor C1_6Region
+ Network.AWS.Types: instance Constructor C1_7Region
+ Network.AWS.Types: instance Constructor C1_8Region
+ Network.AWS.Types: instance Constructor C1_9Region
+ Network.AWS.Types: instance Data Endpoint
+ Network.AWS.Types: instance Data LogLevel
+ Network.AWS.Types: instance Data Region
+ Network.AWS.Types: instance Data Seconds
+ Network.AWS.Types: instance Datatype D1Region
+ Network.AWS.Types: instance Datatype D1Seconds
+ Network.AWS.Types: instance Enum LogLevel
+ Network.AWS.Types: instance Enum Seconds
+ Network.AWS.Types: instance Eq Abbrev
+ Network.AWS.Types: instance Eq AccessKey
+ Network.AWS.Types: instance Eq Endpoint
+ Network.AWS.Types: instance Eq ErrorCode
+ Network.AWS.Types: instance Eq ErrorMessage
+ Network.AWS.Types: instance Eq LogLevel
+ Network.AWS.Types: instance Eq Region
+ Network.AWS.Types: instance Eq RequestId
+ Network.AWS.Types: instance Eq Seconds
+ Network.AWS.Types: instance Eq SecretKey
+ Network.AWS.Types: instance Eq SerializeError
+ Network.AWS.Types: instance Eq ServiceError
+ Network.AWS.Types: instance Eq SessionToken
+ Network.AWS.Types: instance Exception Error
+ Network.AWS.Types: instance FromJSON Abbrev
+ Network.AWS.Types: instance FromJSON AuthEnv
+ Network.AWS.Types: instance FromJSON ErrorCode
+ Network.AWS.Types: instance FromJSON ErrorMessage
+ Network.AWS.Types: instance FromJSON RequestId
+ Network.AWS.Types: instance FromText Abbrev
+ Network.AWS.Types: instance FromText ErrorCode
+ Network.AWS.Types: instance FromText ErrorMessage
+ Network.AWS.Types: instance FromText LogLevel
+ Network.AWS.Types: instance FromText Region
+ Network.AWS.Types: instance FromText RequestId
+ Network.AWS.Types: instance FromXML Abbrev
+ Network.AWS.Types: instance FromXML ErrorCode
+ Network.AWS.Types: instance FromXML ErrorMessage
+ Network.AWS.Types: instance FromXML Region
+ Network.AWS.Types: instance FromXML RequestId
+ Network.AWS.Types: instance Generic Region
+ Network.AWS.Types: instance Generic Seconds
+ Network.AWS.Types: instance Hashable Region
+ Network.AWS.Types: instance Integral Seconds
+ Network.AWS.Types: instance IsString Abbrev
+ Network.AWS.Types: instance IsString AccessKey
+ Network.AWS.Types: instance IsString ErrorCode
+ Network.AWS.Types: instance IsString ErrorMessage
+ Network.AWS.Types: instance IsString RequestId
+ Network.AWS.Types: instance IsString SecretKey
+ Network.AWS.Types: instance IsString SessionToken
+ Network.AWS.Types: instance Num Seconds
+ Network.AWS.Types: instance Ord Abbrev
+ Network.AWS.Types: instance Ord ErrorCode
+ Network.AWS.Types: instance Ord ErrorMessage
+ Network.AWS.Types: instance Ord LogLevel
+ Network.AWS.Types: instance Ord Region
+ Network.AWS.Types: instance Ord RequestId
+ Network.AWS.Types: instance Ord Seconds
+ Network.AWS.Types: instance Read Region
+ Network.AWS.Types: instance Read Seconds
+ Network.AWS.Types: instance Real Seconds
+ Network.AWS.Types: instance Show Abbrev
+ Network.AWS.Types: instance Show AccessKey
+ Network.AWS.Types: instance Show Endpoint
+ Network.AWS.Types: instance Show Error
+ Network.AWS.Types: instance Show ErrorCode
+ Network.AWS.Types: instance Show ErrorMessage
+ Network.AWS.Types: instance Show LogLevel
+ Network.AWS.Types: instance Show Region
+ Network.AWS.Types: instance Show RequestId
+ Network.AWS.Types: instance Show Seconds
+ Network.AWS.Types: instance Show SerializeError
+ Network.AWS.Types: instance Show ServiceError
+ Network.AWS.Types: instance ToByteString AccessKey
+ Network.AWS.Types: instance ToByteString LogLevel
+ Network.AWS.Types: instance ToByteString Region
+ Network.AWS.Types: instance ToByteString Seconds
+ Network.AWS.Types: instance ToByteString SecretKey
+ Network.AWS.Types: instance ToByteString SessionToken
+ Network.AWS.Types: instance ToLog Abbrev
+ Network.AWS.Types: instance ToLog AccessKey
+ Network.AWS.Types: instance ToLog Auth
+ Network.AWS.Types: instance ToLog AuthEnv
+ Network.AWS.Types: instance ToLog Error
+ Network.AWS.Types: instance ToLog ErrorCode
+ Network.AWS.Types: instance ToLog ErrorMessage
+ Network.AWS.Types: instance ToLog Meta
+ Network.AWS.Types: instance ToLog Region
+ Network.AWS.Types: instance ToLog RequestId
+ Network.AWS.Types: instance ToLog Seconds
+ Network.AWS.Types: instance ToLog SerializeError
+ Network.AWS.Types: instance ToLog ServiceError
+ Network.AWS.Types: instance ToQuery Seconds
+ Network.AWS.Types: instance ToText Abbrev
+ Network.AWS.Types: instance ToText AccessKey
+ Network.AWS.Types: instance ToText ErrorCode
+ Network.AWS.Types: instance ToText ErrorMessage
+ Network.AWS.Types: instance ToText LogLevel
+ Network.AWS.Types: instance ToText Region
+ Network.AWS.Types: instance ToText RequestId
+ Network.AWS.Types: instance ToText Seconds
+ Network.AWS.Types: instance ToText SecretKey
+ Network.AWS.Types: instance ToText SessionToken
+ Network.AWS.Types: instance ToXML Region
+ Network.AWS.Types: instance Typeable Endpoint
+ Network.AWS.Types: instance Typeable Error
+ Network.AWS.Types: instance Typeable LogLevel
+ Network.AWS.Types: instance Typeable Region
+ Network.AWS.Types: instance Typeable Seconds
+ Network.AWS.Types: instance Typeable SerializeError
+ Network.AWS.Types: instance Typeable ServiceError
+ Network.AWS.Types: retryAttempts :: Lens' Retry Int
+ Network.AWS.Types: retryCheck :: Lens' Retry (ServiceError -> Maybe Text)
+ Network.AWS.Types: rqPresign :: Seconds -> Algorithm a
+ Network.AWS.Types: rqService :: Lens' (Request a) Service
+ Network.AWS.Types: rqSign :: Algorithm a
+ Network.AWS.Types: serviceCheck :: Lens' Service (Status -> Bool)
+ Network.AWS.Types: serviceEndpoint :: Setter' Service Endpoint
+ Network.AWS.Types: serviceRetry :: Lens' Service Retry
+ Network.AWS.Types: serviceSigner :: Lens' Service Signer
+ Network.AWS.Types: serviceTimeout :: Lens' Service (Maybe Seconds)
+ Network.AWS.Types: sgPresign :: Signer -> forall a. Seconds -> Algorithm a
+ Network.AWS.Types: sgSign :: Signer -> forall a. Algorithm a
+ Network.AWS.Types: type Algorithm a = Request a -> AuthEnv -> Region -> UTCTime -> Signed a
+ Network.AWS.Waiter: _waitAcceptors :: Wait a -> [Acceptor a]
+ Network.AWS.Waiter: _waitAttempts :: Wait a -> !Int
+ Network.AWS.Waiter: _waitDelay :: Wait a -> !Seconds
+ Network.AWS.Waiter: _waitName :: Wait a -> ByteString
+ Network.AWS.Waiter: instance Eq Accept
+ Network.AWS.Waiter: instance Show Accept
+ Network.AWS.Waiter: instance ToLog Accept
- Network.AWS.Compat.Time: parseTime :: ParseTime a => TimeLocale -> String -> String -> Maybe a
+ Network.AWS.Compat.Time: parseTime :: ParseTime t => TimeLocale -> String -> String -> Maybe t
- Network.AWS.Data.JSON: (.=) :: KeyValue kv => forall v. ToJSON v => Text -> v -> kv
+ Network.AWS.Data.JSON: (.=) :: ToJSON a => Text -> a -> Pair
- Network.AWS.Endpoint: defaultEndpoint :: Service s -> Region -> Endpoint
+ Network.AWS.Endpoint: defaultEndpoint :: Service -> Region -> Endpoint
- Network.AWS.Request: defaultRequest :: (ToPath a, ToQuery a, ToHeaders a) => a -> Request a
+ Network.AWS.Request: defaultRequest :: ToRequest a => Service -> a -> Request a
- Network.AWS.Request: delete :: (ToPath a, ToQuery a, ToHeaders a) => a -> Request a
+ Network.AWS.Request: delete :: ToRequest a => Service -> a -> Request a
- Network.AWS.Request: get :: (ToPath a, ToQuery a, ToHeaders a) => a -> Request a
+ Network.AWS.Request: get :: ToRequest a => Service -> a -> Request a
- Network.AWS.Request: head' :: (ToPath a, ToQuery a, ToHeaders a) => a -> Request a
+ Network.AWS.Request: head' :: ToRequest a => Service -> a -> Request a
- Network.AWS.Request: post :: (ToPath a, ToQuery a, ToHeaders a) => a -> Request a
+ Network.AWS.Request: post :: ToRequest a => Service -> a -> Request a
- Network.AWS.Request: postBody :: (ToPath a, ToQuery a, ToHeaders a, ToBody a) => a -> Request a
+ Network.AWS.Request: postBody :: (ToRequest a, ToBody a) => Service -> a -> Request a
- Network.AWS.Request: postJSON :: (ToQuery a, ToPath a, ToHeaders a, ToJSON a) => a -> Request a
+ Network.AWS.Request: postJSON :: (ToRequest a, ToJSON a) => Service -> a -> Request a
- Network.AWS.Request: postQuery :: (ToQuery a, ToPath a, ToHeaders a) => a -> Request a
+ Network.AWS.Request: postQuery :: ToRequest a => Service -> a -> Request a
- Network.AWS.Request: postXML :: (ToQuery a, ToPath a, ToHeaders a, ToElement a) => a -> Request a
+ Network.AWS.Request: postXML :: (ToRequest a, ToElement a) => Service -> a -> Request a
- Network.AWS.Request: put :: (ToPath a, ToQuery a, ToHeaders a) => a -> Request a
+ Network.AWS.Request: put :: ToRequest a => Service -> a -> Request a
- Network.AWS.Request: putBody :: (ToPath a, ToQuery a, ToHeaders a, ToBody a) => a -> Request a
+ Network.AWS.Request: putBody :: (ToRequest a, ToBody a) => Service -> a -> Request a
- Network.AWS.Request: putJSON :: (ToQuery a, ToPath a, ToHeaders a, ToJSON a) => a -> Request a
+ Network.AWS.Request: putJSON :: (ToRequest a, ToJSON a) => Service -> a -> Request a
- Network.AWS.Request: putXML :: (ToPath a, ToQuery a, ToHeaders a, ToElement a) => a -> Request a
+ Network.AWS.Request: putXML :: (ToRequest a, ToElement a) => Service -> a -> Request a
- Network.AWS.Response: deserialise :: MonadResource m => (LazyByteString -> Either String b) -> (Int -> ResponseHeaders -> b -> Either String (Rs a)) -> Logger -> Service s -> Request a -> ClientResponse -> m (Response a)
+ Network.AWS.Response: deserialise :: MonadResource m => (LazyByteString -> Either String b) -> (Int -> ResponseHeaders -> b -> Either String (Rs a)) -> Logger -> Service -> Proxy a -> ClientResponse -> m (Response a)
- Network.AWS.Response: receive :: MonadResource m => (Int -> ResponseHeaders -> ResponseBody -> m (Either String (Rs a))) -> Service s -> Request a -> ClientResponse -> m (Response a)
+ Network.AWS.Response: receive :: MonadResource m => (Int -> ResponseHeaders -> ResponseBody -> m (Either String (Rs a))) -> Service -> Proxy a -> ClientResponse -> m (Response a)
- Network.AWS.Response: receiveBody :: MonadResource m => (Int -> ResponseHeaders -> RsBody -> Either String (Rs a)) -> Logger -> Service s -> Request a -> ClientResponse -> m (Response a)
+ Network.AWS.Response: receiveBody :: MonadResource m => (Int -> ResponseHeaders -> RsBody -> Either String (Rs a)) -> Logger -> Service -> Proxy a -> ClientResponse -> m (Response a)
- Network.AWS.Response: receiveEmpty :: MonadResource m => (Int -> ResponseHeaders -> () -> Either String (Rs a)) -> Logger -> Service s -> Request a -> ClientResponse -> m (Response a)
+ Network.AWS.Response: receiveEmpty :: MonadResource m => (Int -> ResponseHeaders -> () -> Either String (Rs a)) -> Logger -> Service -> Proxy a -> ClientResponse -> m (Response a)
- Network.AWS.Response: receiveJSON :: MonadResource m => (Int -> ResponseHeaders -> Object -> Either String (Rs a)) -> Logger -> Service s -> Request a -> ClientResponse -> m (Response a)
+ Network.AWS.Response: receiveJSON :: MonadResource m => (Int -> ResponseHeaders -> Object -> Either String (Rs a)) -> Logger -> Service -> Proxy a -> ClientResponse -> m (Response a)
- Network.AWS.Response: receiveNull :: MonadResource m => Rs a -> Logger -> Service s -> Request a -> ClientResponse -> m (Response a)
+ Network.AWS.Response: receiveNull :: MonadResource m => Rs a -> Logger -> Service -> Proxy a -> ClientResponse -> m (Response a)
- Network.AWS.Response: receiveXML :: MonadResource m => (Int -> ResponseHeaders -> [Node] -> Either String (Rs a)) -> Logger -> Service s -> Request a -> ClientResponse -> m (Response a)
+ Network.AWS.Response: receiveXML :: MonadResource m => (Int -> ResponseHeaders -> [Node] -> Either String (Rs a)) -> Logger -> Service -> Proxy a -> ClientResponse -> m (Response a)
- Network.AWS.Response: receiveXMLWrapper :: MonadResource m => Text -> (Int -> ResponseHeaders -> [Node] -> Either String (Rs a)) -> Logger -> Service s -> Request a -> ClientResponse -> m (Response a)
+ Network.AWS.Response: receiveXMLWrapper :: MonadResource m => Text -> (Int -> ResponseHeaders -> [Node] -> Either String (Rs a)) -> Logger -> Service -> Proxy a -> ClientResponse -> m (Response a)
- Network.AWS.Types: Endpoint :: ByteString -> ByteString -> Endpoint
+ Network.AWS.Types: Endpoint :: ByteString -> !Bool -> !Int -> ByteString -> Endpoint
- Network.AWS.Types: Request :: !StdMethod -> !RawPath -> !QueryString -> ![Header] -> !RqBody -> Request a
+ Network.AWS.Types: Request :: !Service -> !StdMethod -> !RawPath -> !QueryString -> ![Header] -> !RqBody -> Request a
- Network.AWS.Types: Service :: !Abbrev -> ByteString -> ByteString -> (Region -> Endpoint) -> Maybe Seconds -> (Status -> Bool) -> (Abbrev -> Status -> [Header] -> LazyByteString -> Error) -> Retry -> Service s
+ Network.AWS.Types: Service :: !Abbrev -> !Signer -> !ByteString -> !ByteString -> !(Region -> Endpoint) -> !(Maybe Seconds) -> !(Status -> Bool) -> !(Abbrev -> Status -> [Header] -> LazyByteString -> Error) -> !Retry -> Service
- Network.AWS.Types: Signed :: Meta v -> ClientRequest -> Signed v a
+ Network.AWS.Types: Signed :: !Meta -> !ClientRequest -> Signed a
- Network.AWS.Types: class AWSService (Sv a) => AWSRequest a where type family Rs a :: * type family Sv a :: *
+ Network.AWS.Types: class AWSRequest a where type family Rs a :: *
- Network.AWS.Types: clientRequest :: ClientRequest
+ Network.AWS.Types: clientRequest :: Endpoint -> Maybe Seconds -> ClientRequest
- Network.AWS.Types: data Service s
+ Network.AWS.Types: data Service
- Network.AWS.Types: data Signed v a
+ Network.AWS.Types: data Signed a
- Network.AWS.Types: response :: (AWSRequest a, MonadResource m) => Logger -> Service s -> Request a -> ClientResponse -> m (Response a)
+ Network.AWS.Types: response :: (AWSRequest a, MonadResource m) => Logger -> Service -> Proxy a -> ClientResponse -> m (Response a)
- Network.AWS.Types: sgMeta :: ToLog (Meta v) => Lens' (Signed v a) (Meta v)
+ Network.AWS.Types: sgMeta :: Signed a -> !Meta
- Network.AWS.Types: sgRequest :: Lens' (Signed v a) ClientRequest
+ Network.AWS.Types: sgRequest :: Signed a -> !ClientRequest

Files

amazonka-core.cabal view
@@ -1,5 +1,5 @@ name:                  amazonka-core-version:               1.1.0+version:               1.2.0 synopsis:              Core data types and functionality for Amazonka libraries. homepage:              https://github.com/brendanhay/amazonka license:               OtherLicense
src/Network/AWS/Data/Headers.hs view
@@ -16,6 +16,7 @@     ( module Network.AWS.Data.Headers     , HeaderName     , Header+    , hContentType     ) where  import qualified Data.ByteString.Char8       as BS8@@ -110,3 +111,6 @@  hAMZNAuth :: HeaderName hAMZNAuth = "X-Amzn-Authorization"++hFormEncoded :: ByteString+hFormEncoded = "application/x-www-form-urlencoded; charset=utf-8"
src/Network/AWS/Data/Log.hs view
@@ -23,6 +23,7 @@ import qualified Data.CaseInsensitive         as CI import           Data.Int import           Data.List                    (intersperse)+import           Data.Maybe import           Data.Monoid import qualified Data.Text                    as Text import qualified Data.Text.Encoding           as Text@@ -32,6 +33,7 @@ import           Data.Word import           GHC.Float import           Network.AWS.Data.ByteString+import           Network.AWS.Data.Headers import           Network.AWS.Data.Path import           Network.AWS.Data.Query import           Network.AWS.Data.Text@@ -123,25 +125,26 @@  instance ToLog Request where     build x = buildLines-        [ "[Client Request] {"-        , "  host    = " <> build (host            x)-        , "  port    = " <> build (port            x)-        , "  secure  = " <> build (secure          x)-        , "  headers = " <> build (requestHeaders  x)-        , "  path    = " <> build (path            x)-        , "  query   = " <> build (queryString     x)-        , "  method  = " <> build (method          x)-        , "  timeout = " <> build (responseTimeout x)-        , "  body    = " <> build (requestBody     x)-        , "}"+        [  "[Client Request] {"+        ,  "  host      = " <> build (host x) <> ":" <> build (port x)+        ,  "  secure    = " <> build (secure x)+        ,  "  method    = " <> build (method x)+        ,  "  target    = " <> build target+        ,  "  timeout   = " <> build (responseTimeout x)+        ,  "  redirects = " <> build (redirectCount x)+        ,  "  path      = " <> build (path            x)+        ,  "  query     = " <> build (queryString     x)+        ,  "  headers   = " <> build (requestHeaders  x)+        ,  "  body      = " <> build (requestBody     x)+        ,  "}"         ]+      where+        target = hAMZTarget `lookup` requestHeaders x  instance ToLog (Response a) where     build x = buildLines         [ "[Client Response] {"         , "  status  = " <> build (responseStatus  x)-        , "  version = " <> build (responseVersion x)         , "  headers = " <> build (responseHeaders x)-        , "  cookies = " <> build (show (responseCookieJar x))         , "}"         ]
src/Network/AWS/Data/Path.hs view
@@ -1,5 +1,4 @@ {-# LANGUAGE DataKinds          #-}-{-# LANGUAGE DefaultSignatures  #-} {-# LANGUAGE FlexibleInstances  #-} {-# LANGUAGE GADTs              #-} {-# LANGUAGE KindSignatures     #-}@@ -30,6 +29,7 @@     , collapsePath     ) where +import qualified Data.ByteString             as BS import qualified Data.ByteString.Char8       as BS8 import           Data.Monoid import           Network.AWS.Data.ByteString@@ -48,7 +48,11 @@     toPath = toBS  rawPath :: ToPath a => a -> Path 'NoEncoding-rawPath = Raw . filter (not . BS8.null) . BS8.split sep . toPath+rawPath = Raw . strip . BS8.split sep . toPath+  where+    strip (x:xs)+        | BS.null x = xs+    strip xs        = xs  data Encoding = NoEncoding | Percent     deriving (Eq, Show)
src/Network/AWS/Data/Text.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE DefaultSignatures #-} {-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE LambdaCase        #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PackageImports    #-} @@ -20,7 +21,6 @@     , fromTextError     , takeLowerText     , takeText-    , matchCI      -- * Serialisation     , ToText   (..)@@ -67,9 +67,6 @@ takeText :: Parser Text takeText = A.takeText -matchCI :: Text -> a -> Parser a-matchCI x y = A.asciiCI x <* A.endOfInput >> return y- class FromText a where     parser :: Parser a @@ -98,7 +95,10 @@     parser = A.signed A.rational <* A.endOfInput  instance FromText Bool where-    parser = matchCI "false" False <|> matchCI "true" True+    parser = takeLowerText >>= \case+        "true"  -> pure True+        "false" -> pure False+        e       -> fromTextError $ "Failure parsing Bool from '" <> e <> "'."  instance FromText StdMethod where     parser = do
src/Network/AWS/Endpoint.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE LambdaCase        #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards   #-}+{-# LANGUAGE ViewPatterns      #-}  -- | -- Module      : Network.AWS.Types@@ -12,6 +13,7 @@ -- module Network.AWS.Endpoint where +import           Control.Lens import qualified Data.CaseInsensitive        as CI import qualified Data.HashSet                as Set import           Data.Monoid@@ -20,10 +22,24 @@  import           Prelude --- | Determine the full host address and credential scope for a 'Service'+-- | A convenience function for overriding the 'Service' 'Endpoint'.+--+-- /See:/ 'serviceEndpoint'.+setEndpoint :: Bool       -- ^ Whether to use HTTPS (ie. SSL).+            -> ByteString -- ^ The hostname to connect to.+            -> Int        -- ^ The port number to connect to.+            -> Service    -- ^ The service configuration to override.+            -> Service+setEndpoint s h p = serviceEndpoint %~ addr+  where+    addr = (endpointSecure .~ s)+         . (endpointHost   .~ h)+         . (endpointPort   .~ p)++-- | Determine the full host address and credential scope -- within the specified 'Region'.-defaultEndpoint :: Service s -> Region -> Endpoint-defaultEndpoint Service{..} r = go (CI.mk _svcPrefix)+defaultEndpoint :: Service -> Region -> Endpoint+defaultEndpoint (_svcPrefix -> p) r = go (CI.mk p)   where     go = \case         "iam"@@ -66,8 +82,8 @@         "cloudfront"             | not china -> global "cloudfront.amazonaws.com" -        _   | china     -> region (_svcPrefix <> "." <> reg <> ".amazonaws.com.cn")-            | otherwise -> region (_svcPrefix <> "." <> reg <> ".amazonaws.com")+        _   | china     -> region (p <> "." <> reg <> ".amazonaws.com.cn")+            | otherwise -> region (p <> "." <> reg <> ".amazonaws.com")      virginia  = r == NorthVirginia     frankfurt = r == Frankfurt@@ -76,8 +92,19 @@      s3 = r `Set.member` except -    region h = Endpoint { _endpointHost = h, _endpointScope = reg }-    global h = Endpoint { _endpointHost = h, _endpointScope = "us-east-1" }+    region h = Endpoint+         { _endpointHost   = h+         , _endpointSecure = True+         , _endpointPort   = 443+         , _endpointScope  = reg+         }++    global h = Endpoint+         { _endpointHost   = h+         , _endpointSecure = True+         , _endpointPort   = 443+         , _endpointScope  = "us-east-1"+         }      reg = toBS r 
src/Network/AWS/Error.hs view
@@ -20,10 +20,9 @@ import qualified Data.ByteString.Lazy        as LBS import           Data.Maybe import           Data.Monoid-import qualified Data.Text                   as Text-import qualified Data.Text.Encoding          as Text import           Network.AWS.Data.ByteString import           Network.AWS.Data.Headers+import           Network.AWS.Data.Text import           Network.AWS.Data.XML import           Network.AWS.Types import           Network.HTTP.Client@@ -71,10 +70,9 @@  getErrorCode :: Status -> [Header] -> ErrorCode getErrorCode s h =-    fromMaybe (ErrorCode . Text.decodeUtf8 $ statusMessage s) $-        case h .# hAMZNErrorType of-            Left  _ -> Nothing-            Right t -> fmap ErrorCode . lastOf traverse $ Text.split (== '#') t+    case h .# hAMZNErrorType of+        Left  _ -> errorCode (toText (statusMessage s))+        Right x -> errorCode x  parseJSONError :: Abbrev                -> Status@@ -86,16 +84,10 @@     parse = eitherDecode' >=> parseEither (withObject "JSONError" go)      go o = do-        c <- (Just <$> o .: "__type") <|> o .:? "code"-        let e = strip <$> c+        e <- (Just <$> o .: "__type") <|> o .:? "code"         m <- msg e o         return $! serviceError a s h e m Nothing -    strip (ErrorCode x) = ErrorCode $-        case Text.break (== '#') x of-            (ns, e) | Text.null e -> ns-                    | otherwise   -> Text.drop 1 e-     msg c o =         if c == Just "RequestEntityTooLarge"             then pure (Just "Request body must be less than 1 MB")@@ -117,7 +109,7 @@     code x = Just <$> (firstElement "Code" x >>= parseXML)          <|> return root -    root = ErrorCode <$> rootElementName bs+    root = errorCode <$> rootElementName bs      may (Left  _) = pure Nothing     may (Right x) = Just <$> parseXML x
src/Network/AWS/Prelude.hs view
@@ -40,12 +40,14 @@ import           Network.AWS.Data.XML        as Export import           Network.AWS.Endpoint        as Export import           Network.AWS.Error           as Export-import           Network.AWS.Types           as Export hiding (AccessKey,-                                                        Endpoint, Seconds,-                                                        SecretKey) import           Network.HTTP.Types.Status   as Export (Status (..)) import           Network.HTTP.Types.URI      as Export (urlDecode, urlEncode) import           Numeric.Natural             as Export (Natural)++import           Network.AWS.Types           as Export hiding (AccessKey,+                                                        Algorithm, Endpoint,+                                                        Seconds, SecretKey,+                                                        Signer, serviceEndpoint)  infixl 7 .!@ 
src/Network/AWS/Request.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE ConstraintKinds   #-} {-# LANGUAGE LambdaCase        #-} {-# LANGUAGE OverloadedStrings #-} @@ -59,62 +60,64 @@ import           Network.HTTP.Types           (StdMethod (..)) import qualified Network.HTTP.Types           as HTTP -head' :: (ToPath a, ToQuery a, ToHeaders a) => a -> Request a-head' x = get x & rqMethod .~ HEAD+type ToRequest a = (ToPath a, ToQuery a, ToHeaders a) -delete :: (ToPath a, ToQuery a, ToHeaders a) => a -> Request a-delete x = get x & rqMethod .~ DELETE+head' :: ToRequest a => Service -> a -> Request a+head' s x = get s x & rqMethod .~ HEAD -get :: (ToPath a, ToQuery a, ToHeaders a) => a -> Request a-get = contentSHA256 . defaultRequest+delete :: ToRequest a => Service -> a -> Request a+delete s x = get s x & rqMethod .~ DELETE -post :: (ToPath a, ToQuery a, ToHeaders a) => a -> Request a-post x = get x & rqMethod .~ POST+get :: ToRequest a => Service -> a -> Request a+get s = contentSHA256 . defaultRequest s -put :: (ToPath a, ToQuery a, ToHeaders a) => a -> Request a-put x = get x & rqMethod .~ PUT+post :: ToRequest a => Service -> a -> Request a+post s x = get s x & rqMethod .~ POST -postXML :: (ToQuery a, ToPath a, ToHeaders a, ToElement a) => a -> Request a-postXML x = putXML x & rqMethod .~ POST+put :: ToRequest a => Service -> a -> Request a+put s x = get s x & rqMethod .~ PUT -postJSON :: (ToQuery a, ToPath a, ToHeaders a, ToJSON a) => a -> Request a-postJSON x = putJSON x & rqMethod .~ POST+postXML :: (ToRequest a, ToElement a) => Service -> a -> Request a+postXML s x = putXML s x & rqMethod .~ POST -postQuery :: (ToQuery a, ToPath a, ToHeaders a) => a -> Request a-postQuery x = Request-    { _rqMethod  = POST+postJSON :: (ToRequest a, ToJSON a) => Service -> a -> Request a+postJSON s x = putJSON s x & rqMethod .~ POST++postQuery :: ToRequest a => Service -> a -> Request a+postQuery s x = Request+    { _rqService = s+    , _rqMethod  = POST     , _rqPath    = rawPath x     , _rqQuery   = mempty     , _rqBody    = toBody (toQuery x)-    , _rqHeaders =-        hdr HTTP.hContentType "application/x-www-form-urlencoded; charset=utf-8"-            (toHeaders x)+    , _rqHeaders = hdr hContentType hFormEncoded (toHeaders x)     } & contentSHA256 -postBody :: (ToPath a, ToQuery a, ToHeaders a, ToBody a) => a -> Request a-postBody x = putBody x & rqMethod .~ POST+postBody :: (ToRequest a, ToBody a) => Service -> a -> Request a+postBody s x = putBody s x & rqMethod .~ POST -putXML :: (ToPath a, ToQuery a, ToHeaders a, ToElement a) => a -> Request a-putXML x = defaultRequest x+putXML :: (ToRequest a, ToElement a) => Service -> a -> Request a+putXML s x = defaultRequest s x     & rqMethod .~ PUT     & rqBody   .~ toBody (toElement x)     & contentSHA256 -putJSON :: (ToQuery a, ToPath a, ToHeaders a, ToJSON a) => a -> Request a-putJSON x = defaultRequest x+putJSON :: (ToRequest a, ToJSON a) => Service -> a -> Request a+putJSON s x = defaultRequest s x     & rqMethod .~ PUT     & rqBody   .~ toBody (toJSON x)     & contentSHA256 -putBody :: (ToPath a, ToQuery a, ToHeaders a, ToBody a) => a -> Request a-putBody x = defaultRequest x+putBody :: (ToRequest a, ToBody a) => Service -> a -> Request a+putBody s x = defaultRequest s x     & rqMethod .~ PUT     & rqBody   .~ toBody x     & contentSHA256 -defaultRequest :: (ToPath a, ToQuery a, ToHeaders a) => a -> Request a-defaultRequest x = Request-    { _rqMethod  = GET+defaultRequest :: ToRequest a => Service -> a -> Request a+defaultRequest s x = Request+    { _rqService = s+    , _rqMethod  = GET     , _rqPath    = rawPath x     , _rqQuery   = toQuery x     , _rqHeaders = toHeaders x@@ -142,17 +145,19 @@     f (Client.requestHeaders x) <&> \y -> x { Client.requestHeaders = y }  requestURL :: ClientRequest -> ByteString-requestURL x =-       scheme (Client.secure      x)-    <> toBS   (Client.host        x)-    <> port   (Client.port        x)-    <> toBS   (Client.path        x)-    <> toBS   (Client.queryString x)+requestURL x = scheme+    <> toBS (Client.host        x)+    <> port (Client.port        x)+    <> toBS (Client.path        x)+    <> toBS (Client.queryString x)   where-    scheme True = "https://"-    scheme _    = "http://"+    scheme+        | secure    = "https://"+        | otherwise = "http://"      port = \case-        80  -> ""-        443 -> ""-        n   -> ":" <> toBS n+        80           -> ""+        443 | secure -> ""+        n            -> ":" <> toBS n++    secure = Client.secure x
src/Network/AWS/Response.hs view
@@ -21,13 +21,14 @@ import           Data.Conduit import qualified Data.Conduit.Binary          as Conduit import           Data.Monoid+import           Data.Proxy import           Data.Text                    (Text) import           Network.AWS.Data.Body import           Network.AWS.Data.ByteString import           Network.AWS.Data.Log import           Network.AWS.Data.XML import           Network.AWS.Types-import           Network.HTTP.Client          hiding (Request, Response)+import           Network.HTTP.Client          hiding (Proxy, Request, Response) import           Network.HTTP.Types import           Text.XML                     (Node) @@ -36,8 +37,8 @@ receiveNull :: MonadResource m             => Rs a             -> Logger-            -> Service s-            -> Request a+            -> Service+            -> Proxy a             -> ClientResponse             -> m (Response a) receiveNull rs _ = receive $ \_ _ x ->@@ -46,8 +47,8 @@ receiveEmpty :: MonadResource m              => (Int -> ResponseHeaders -> () -> Either String (Rs a))              -> Logger-             -> Service s-             -> Request a+             -> Service+             -> Proxy a              -> ClientResponse              -> m (Response a) receiveEmpty f _ = receive $ \s h x ->@@ -57,8 +58,8 @@                   => Text                   -> (Int -> ResponseHeaders -> [Node] -> Either String (Rs a))                   -> Logger-                  -> Service s-                  -> Request a+                  -> Service+                  -> Proxy a                   -> ClientResponse                   -> m (Response a) receiveXMLWrapper n f = receiveXML (\s h x -> x .@ n >>= f s h)@@ -66,8 +67,8 @@ receiveXML :: MonadResource m            => (Int -> ResponseHeaders -> [Node] -> Either String (Rs a))            -> Logger-           -> Service s-           -> Request a+           -> Service+           -> Proxy a            -> ClientResponse            -> m (Response a) receiveXML = deserialise decodeXML@@ -75,8 +76,8 @@ receiveJSON :: MonadResource m             => (Int -> ResponseHeaders -> Object -> Either String (Rs a))             -> Logger-            -> Service s-            -> Request a+            -> Service+            -> Proxy a             -> ClientResponse             -> m (Response a) receiveJSON = deserialise eitherDecode'@@ -84,8 +85,8 @@ receiveBody :: MonadResource m             => (Int -> ResponseHeaders -> RsBody -> Either String (Rs a))             -> Logger-            -> Service s-            -> Request a+            -> Service+            -> Proxy a             -> ClientResponse             -> m (Response a) receiveBody f _ = receive $ \s h x -> return (f s h (RsBody x))@@ -94,8 +95,8 @@             => (LazyByteString -> Either String b)             -> (Int -> ResponseHeaders -> b -> Either String (Rs a))             -> Logger-            -> Service s-            -> Request a+            -> Service+            -> Proxy a             -> ClientResponse             -> m (Response a) deserialise g f l = receive $ \s h x -> do@@ -105,12 +106,12 @@  receive :: MonadResource m         => (Int -> ResponseHeaders -> ResponseBody -> m (Either String (Rs a)))-        -> Service s-        -> Request a+        -> Service+        -> Proxy a         -> ClientResponse         -> m (Response a)-receive f Service{..} _ rs-    | not (_svcStatus s) = sinkLBS x >>= serviceErr+receive f  Service{..} _ rs+    | not (_svcCheck s) = sinkLBS x >>= serviceErr     | otherwise          = do         p <- f (fromEnum s) h x         either serializeErr
src/Network/AWS/Sign/V2.hs view
@@ -13,13 +13,11 @@ -- Portability : non-portable (GHC extensions) -- module Network.AWS.Sign.V2-    ( V2-    , Meta (..)+    ( v2     ) where  import           Control.Applicative import qualified Data.ByteString.Char8        as BS8-import           Data.List                    (intersperse) import           Data.Monoid import           Data.Time import           Network.AWS.Data.Body@@ -36,16 +34,14 @@  import           Prelude -data V2--data instance Meta V2 = Meta+data V2 = V2     { metaTime      :: !UTCTime     , metaEndpoint  :: !Endpoint     , metaSignature :: !ByteString     } -instance ToLog (Meta V2) where-    build Meta{..} = mconcat $ intersperse "\n"+instance ToLog V2 where+    build V2{..} = buildLines         [ "[Version 2 Metadata] {"         , "  time      = " <> build metaTime         , "  endpoint  = " <> build (_endpointHost metaEndpoint)@@ -53,46 +49,50 @@         , "}"         ] -instance AWSSigner V2 where-    signed AuthEnv{..} r t Service{..} Request{..} = Signed meta rq-      where-        meta = Meta t end signature+v2 :: Signer+v2 = Signer sign' (const sign') -- FIXME: revisit v2 presigning. -        rq = clientRequest-            { Client.method         = meth-            , Client.host           = _endpointHost-            , Client.path           = path'-            , Client.queryString    = toBS authorised-            , Client.requestHeaders = headers-            , Client.requestBody    = bodyRequest _rqBody-            }+sign' :: Algorithm a+sign' Request{..} AuthEnv{..} r t = Signed meta rq+  where+    meta = Meta (V2 t end signature) -        meth  = toBS _rqMethod-        path' = toBS (escapePath _rqPath)+    rq = (clientRequest end _svcTimeout)+        { Client.method         = meth+        , Client.path           = path'+        , Client.queryString    = toBS authorised+        , Client.requestHeaders = headers+        , Client.requestBody    = bodyRequest _rqBody+        } -        end@Endpoint{..} = _svcEndpoint r+    meth  = toBS _rqMethod+    path' = toBS (escapePath _rqPath) -        authorised = pair "Signature" (urlEncode True signature) query+    end@Endpoint{..} = _svcEndpoint r -        signature = digestToBase Base64-            . hmacSHA256 (toBS _authSecret)-            $ BS8.intercalate "\n"-                [ meth-                , _endpointHost-                , path'-                , toBS query-                ]+    Service{..} = _rqService -        query =-             pair "Version"          _svcVersion-           . pair "SignatureVersion" ("2"          :: ByteString)-           . pair "SignatureMethod"  ("HmacSHA256" :: ByteString)-           . pair "Timestamp"        time-           . pair "AWSAccessKeyId"   (toBS _authAccess)-           $ _rqQuery <> maybe mempty toQuery token+    authorised = pair "Signature" (urlEncode True signature) query -        token = ("SecurityToken" :: ByteString,) . toBS <$> _authToken+    signature = digestToBase Base64+        . hmacSHA256 (toBS _authSecret)+        $ BS8.intercalate "\n"+            [ meth+            , _endpointHost+            , path'+            , toBS query+            ] -        headers = hdr hDate time _rqHeaders+    query =+         pair "Version"          _svcVersion+       . pair "SignatureVersion" ("2"          :: ByteString)+       . pair "SignatureMethod"  ("HmacSHA256" :: ByteString)+       . pair "Timestamp"        time+       . pair "AWSAccessKeyId"   (toBS _authAccess)+       $ _rqQuery <> maybe mempty toQuery token -        time = toBS (Time t :: ISO8601)+    token = ("SecurityToken" :: ByteString,) . toBS <$> _authToken++    headers = hdr hDate time _rqHeaders++    time = toBS (Time t :: ISO8601)
src/Network/AWS/Sign/V4.hs view
@@ -16,13 +16,15 @@ -- Portability : non-portable (GHC extensions) -- module Network.AWS.Sign.V4-    ( V4-    , Meta (..)+    ( V4 (..)+    , v4+    , metadata     ) where  import           Control.Applicative import           Control.Lens import           Data.Bifunctor+import qualified Data.ByteString              as BS import qualified Data.ByteString.Char8        as BS8 import qualified Data.CaseInsensitive         as CI import qualified Data.Foldable                as Fold@@ -45,9 +47,7 @@  import           Prelude -data V4--data instance Meta V4 = Meta+data V4 = V4     { metaTime             :: !UTCTime     , metaMethod           :: !Method     , metaPath             :: !Path@@ -61,10 +61,11 @@     , metaSignature        :: !Signature     , metaHeaders          :: ![Header]     , metaBody             :: Client.RequestBody+    , metaTimeout          :: !(Maybe Seconds)     } -instance ToLog (Meta V4) where-    build Meta{..} = buildLines+instance ToLog V4 where+    build V4{..} = buildLines         [ "[Version 4 Metadata] {"         , "  time              = " <> build metaTime         , "  endpoint          = " <> build (_endpointHost metaEndpoint)@@ -80,44 +81,49 @@         , "}"         ] -instance AWSPresigner V4 where-    presigned auth reg ts ex svc rq = finalise meta authorise-      where-        authorise = queryString-            <>~ ("&X-Amz-Signature=" <> toBS (metaSignature meta))+v4 :: Signer+v4 = Signer sign' presign' -        meta = sign auth reg ts svc presign digest (prepare rq)+presign' :: Seconds -> Algorithm a+presign' ex rq auth reg ts = finalise meta authorise+  where+    authorise = queryString+        <>~ ("&X-Amz-Signature=" <> toBS (metaSignature meta)) -        presign c shs =-              pair (CI.original hAMZAlgorithm)     algorithm-            . pair (CI.original hAMZCredential)    (toBS c)-            . pair (CI.original hAMZDate)          (Time ts :: AWSTime)-            . pair (CI.original hAMZExpires)       ex-            . pair (CI.original hAMZSignedHeaders) (toBS shs)-            . pair (CI.original hAMZToken)         (toBS <$> _authToken auth)+    meta = metadata auth reg ts presign digest (prepare rq) -        digest = Tag "UNSIGNED-PAYLOAD"+    presign c shs =+          pair (CI.original hAMZAlgorithm)     algorithm+        . pair (CI.original hAMZCredential)    (toBS c)+        . pair (CI.original hAMZDate)          (Time ts :: AWSTime)+        . pair (CI.original hAMZExpires)       ex+        . pair (CI.original hAMZSignedHeaders) (toBS shs)+        . pair (CI.original hAMZToken)         (toBS <$> _authToken auth) -        prepare = rqHeaders .~ []+    digest = Tag "UNSIGNED-PAYLOAD" -instance AWSSigner V4 where-    signed auth reg ts svc rq = finalise meta authorise-      where-        authorise = requestHeaders-            <>~ [(hAuthorization, authorisation meta)]+    prepare = rqHeaders .~ [] -        meta = sign auth reg ts svc presign digest (prepare rq)+sign' :: Algorithm a+sign' rq auth reg ts = finalise meta authorise+  where+    authorise = requestHeaders+        <>~ [(hAuthorization, authorisation meta)] -        presign _ _ = id+    meta = metadata auth reg ts presign digest (prepare rq) -        digest = Tag . digestToBase Base16 . bodySHA256 $ _rqBody rq+    presign _ _ = id -        prepare = rqHeaders %~-            ( hdr hHost    (_endpointHost (_svcEndpoint svc reg))-            . hdr hAMZDate (toBS (Time ts :: AWSTime))-            . maybe id (hdr hAMZToken . toBS) (_authToken auth)-            )+    digest = Tag . digestToBase Base16 . bodySHA256 $ _rqBody rq +    prepare = rqHeaders %~+        ( hdr hHost    (_endpointHost end)+        . hdr hAMZDate (toBS (Time ts :: AWSTime))+        . maybe id (hdr hAMZToken . toBS) (_authToken auth)+        )++    end = _svcEndpoint (_rqService rq) reg+ -- | Used to tag provenance. This allows keeping the same layout as -- the signing documentation, passing 'ByteString's everywhere, with -- some type guarantees.@@ -145,33 +151,36 @@ type Path              = Tag "path"               ByteString type Signature         = Tag "signature"          ByteString -authorisation :: Meta V4 -> ByteString-authorisation Meta{..} = algorithm+authorisation :: V4 -> ByteString+authorisation V4{..} = algorithm     <> " Credential="     <> toBS metaCredential     <> ", SignedHeaders=" <> toBS metaSignedHeaders     <> ", Signature="     <> toBS metaSignature -finalise :: Meta V4 -> (ClientRequest -> ClientRequest) -> Signed V4 a-finalise meta authorise = Signed meta . authorise $ clientRequest-    { Client.method         = toBS (metaMethod meta)-    , Client.host           = _endpointHost (metaEndpoint meta)-    , Client.path           = toBS (metaPath meta)-    , Client.queryString    = if BS8.null qbs then qbs else '?' `BS8.cons` qbs-    , Client.requestHeaders = metaHeaders meta-    , Client.requestBody    = metaBody meta-    }+finalise :: V4 -> (ClientRequest -> ClientRequest) -> Signed a+finalise m@V4{..} authorise = Signed (Meta m) (authorise rq)   where-    qbs = toBS (metaCanonicalQuery meta)+    rq = (clientRequest metaEndpoint metaTimeout)+        { Client.method         = toBS metaMethod+        , Client.path           = toBS metaPath+        , Client.queryString    = qry+        , Client.requestHeaders = metaHeaders+        , Client.requestBody    = metaBody+        } -sign :: AuthEnv-     -> Region-     -> UTCTime-     -> Service s-     -> (Credential -> SignedHeaders -> QueryString -> QueryString)-     -> Hash-     -> Request a-     -> Meta V4-sign auth reg ts svc presign digest rq = Meta+    qry | BS.null x = x+        | otherwise = '?' `BS8.cons` x+      where+        x = toBS metaCanonicalQuery++metadata :: AuthEnv+         -> Region+         -> UTCTime+         -> (Credential -> SignedHeaders -> QueryString -> QueryString)+         -> Hash+         -> Request a+         -> V4+metadata auth reg ts presign digest rq = V4     { metaTime             = ts     , metaMethod           = method     , metaPath             = path@@ -185,6 +194,7 @@     , metaSignature        = signature (_authSecret auth) scope sts     , metaHeaders          = _rqHeaders rq     , metaBody             = bodyRequest (_rqBody rq)+    , metaTimeout          = _svcTimeout svc     }   where     query = canonicalQuery . presign cred shs $ _rqQuery rq@@ -200,8 +210,10 @@      end    = _svcEndpoint svc reg     method = Tag . toBS $ _rqMethod rq-    path   = escapedPath svc rq+    path   = escapedPath rq +    svc    = _rqService rq+ algorithm :: ByteString algorithm = "AWS4-HMAC-SHA256" @@ -223,7 +235,7 @@ credential :: AccessKey -> CredentialScope -> Credential credential k c = Tag (toBS k <> "/" <> toBS c) -credentialScope :: Service s -> Endpoint -> UTCTime -> CredentialScope+credentialScope :: Service -> Endpoint -> UTCTime -> CredentialScope credentialScope s e t = Tag     [ toBS (Time t :: BasicTime)     , toBS (_endpointScope e)@@ -248,9 +260,9 @@        , toBS digest        ] -escapedPath :: Service s -> Request a -> Path-escapedPath s r = Tag . toBS . escapePath $-    case _svcAbbrev s of+escapedPath :: Request a -> Path+escapedPath r = Tag . toBS . escapePath $+    case _svcAbbrev (_rqService r) of         "S3" -> _rqPath r         _    -> collapsePath (_rqPath r) 
src/Network/AWS/Types.hs view
@@ -5,13 +5,9 @@ {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase                 #-} {-# LANGUAGE OverloadedStrings          #-}-{-# LANGUAGE PackageImports             #-} {-# LANGUAGE RankNTypes                 #-} {-# LANGUAGE RecordWildCards            #-}-{-# LANGUAGE ScopedTypeVariables        #-}-{-# LANGUAGE StandaloneDeriving         #-} {-# LANGUAGE TypeFamilies               #-}-{-# LANGUAGE ViewPatterns               #-}  -- | -- Module      : Network.AWS.Types@@ -37,35 +33,43 @@     , LogLevel       (..)     , Logger -    -- * Services-    , Abbrev-    , AWSService     (..)-    , Service        (..)-    , serviceOf--    -- * Retries-    , Retry          (..)-     -- * Signing-    , AWSSigner      (..)-    , AWSPresigner   (..)-    , Meta+    , Algorithm+    , Meta           (..)+    , Signer         (..)     , Signed         (..)-    , sgMeta-    , sgRequest +    -- * Service+    , Abbrev+    , Service        (..)+    , serviceSigner+    , serviceEndpoint+    , serviceTimeout+    , serviceCheck+    , serviceRetry+     -- * Requests     , AWSRequest     (..)     , Request        (..)+    , rqService     , rqMethod     , rqHeaders     , rqPath     , rqQuery     , rqBody+    , rqSign+    , rqPresign      -- * Responses     , Response +    -- * Retries+    , Retry          (..)+    , exponentBase+    , exponentGrowth+    , retryAttempts+    , retryCheck+     -- * Errors     , AsError        (..)     , Error          (..)@@ -85,14 +89,21 @@     , serviceMessage     , serviceRequestId     -- ** Error Types-    , ErrorCode      (..)+    , ErrorCode+    , errorCode     , ErrorMessage   (..)     , RequestId      (..)      -- * Regions-    , Endpoint       (..)     , Region         (..) +    -- * Endpoints+    , Endpoint       (..)+    , endpointHost+    , endpointPort+    , endpointSecure+    , endpointScope+     -- * HTTP     , ClientRequest     , ClientResponse@@ -101,7 +112,6 @@      -- ** Seconds     , Seconds         (..)-    , _Seconds     , seconds     , microseconds @@ -110,38 +120,38 @@     , _Default     ) where -import           Control.Exception-import           Control.Exception.Lens       (exception) import           Control.Applicative import           Control.Concurrent           (ThreadId)+import           Control.Exception+import           Control.Exception.Lens       (exception) import           Control.Lens                 hiding (coerce) import           Control.Monad.IO.Class import           Control.Monad.Trans.Resource import           Data.Aeson                   hiding (Error) import qualified Data.ByteString              as BS import           Data.ByteString.Builder      (Builder)-import qualified Data.ByteString.Builder      as Build-import qualified Data.ByteString.Lazy.Char8   as LBS8 import           Data.Coerce import           Data.Conduit import           Data.Data                    (Data, Typeable) import           Data.Hashable import           Data.IORef+import           Data.Maybe import           Data.Monoid import           Data.Proxy import           Data.String+import qualified Data.Text                    as Text import qualified Data.Text.Encoding           as Text import           Data.Time import           GHC.Generics                 (Generic) import           Network.AWS.Data.Body-import           Network.AWS.Data.Crypto-import           Network.AWS.Data.Log import           Network.AWS.Data.ByteString+import           Network.AWS.Data.JSON+import           Network.AWS.Data.Log import           Network.AWS.Data.Path import           Network.AWS.Data.Query import           Network.AWS.Data.Text import           Network.AWS.Data.XML-import           Network.HTTP.Client          hiding (Request, Response, Proxy)+import           Network.HTTP.Client          hiding (Proxy, Request, Response) import qualified Network.HTTP.Client          as Client import           Network.HTTP.Types.Header import           Network.HTTP.Types.Method@@ -159,23 +169,36 @@ -- | A convenience alias encapsulating the common 'Response' body. type ResponseBody = ResumableSource (ResourceT IO) ByteString --- | Construct a 'ClientRequest' using common parameters such as TLS and prevent--- throwing errors when receiving erroneous status codes in respones.-clientRequest :: ClientRequest-clientRequest = def-    { Client.secure        = True-    , Client.port          = 443-    , Client.redirectCount = 0-    , Client.checkStatus   = \_ _ _ -> Nothing-    }- -- | Abbreviated service name. newtype Abbrev = Abbrev Text     deriving (Eq, Ord, Show, IsString, FromXML, FromJSON, FromText, ToText, ToLog)  newtype ErrorCode = ErrorCode Text-    deriving (Eq, Ord, Show, IsString, FromXML, FromJSON, FromText, ToText, ToLog)+    deriving (Eq, Ord, Show, ToText, ToLog) +instance IsString ErrorCode where fromString = errorCode . fromString+instance FromJSON ErrorCode where parseJSON  = parseJSONText "ErrorCode"+instance FromXML  ErrorCode where parseXML   = parseXMLText  "ErrorCode"++instance FromText ErrorCode where+    parser = errorCode <$> parser++-- | Construct an 'ErrorCode'.+errorCode :: Text -> ErrorCode+errorCode = ErrorCode . strip . unnamespace+  where+    -- Common suffixes are stripped since the service definitions are ambigiuous+    -- as to whether the error shape's name, or the error code is present+    -- in the response.+    strip x = fromMaybe x $+        Text.stripSuffix "Exception" x <|> Text.stripSuffix "Fault" x++    -- Removing the (potential) leading ...# namespace.+    unnamespace x =+        case Text.break (== '#') x of+            (ns, e) | Text.null e -> ns+                    | otherwise   -> Text.drop 1 e+ newtype ErrorMessage = ErrorMessage Text     deriving (Eq, Ord, Show, IsString, FromXML, FromJSON, FromText, ToText, ToLog) @@ -296,17 +319,48 @@         x              -> Left  x  data Endpoint = Endpoint-    { _endpointHost  :: ByteString-    , _endpointScope :: ByteString+    { _endpointHost   :: ByteString+    , _endpointSecure :: !Bool+    , _endpointPort   :: !Int+    , _endpointScope  :: ByteString     } deriving (Eq, Show, Data, Typeable) +endpointHost :: Lens' Endpoint ByteString+endpointHost = lens _endpointHost (\s a -> s { _endpointHost = a })++endpointSecure :: Lens' Endpoint Bool+endpointSecure = lens _endpointSecure (\s a -> s { _endpointSecure = a })++endpointPort :: Lens' Endpoint Int+endpointPort = lens _endpointPort (\s a -> s { _endpointPort = a })++endpointScope :: Lens' Endpoint ByteString+endpointScope = lens _endpointScope (\s a -> s { _endpointScope = a })+ data LogLevel-    = Error -- ^ Error messages only.-    | Info  -- ^ Info messages supplied by the user - this level is not emitted by the library.+    = Info  -- ^ Info messages supplied by the user - this level is not emitted by the library.+    | Error -- ^ Error messages only.     | Debug -- ^ Useful debug information + info + error levels.     | Trace -- ^ Includes potentially sensitive signing metadata, and non-streaming response bodies.       deriving (Eq, Ord, Enum, Show, Data, Typeable) +instance FromText LogLevel where+    parser = takeLowerText >>= \case+        "info"  -> pure Info+        "error" -> pure Error+        "debug" -> pure Debug+        "trace" -> pure Trace+        e       -> fromTextError $ "Failure parsing LogLevel from " <> e++instance ToText LogLevel where+    toText = \case+        Info  -> "info"+        Error -> "error"+        Debug -> "debug"+        Trace -> "trace"++instance ToByteString LogLevel+ -- | A function threaded through various request and serialisation routines -- to log informational and debug messages. type Logger = LogLevel -> Builder -> IO ()@@ -321,43 +375,92 @@       -- if the request should be retried.     } +exponentBase :: Lens' Retry Double+exponentBase = lens _retryBase (\s a -> s { _retryBase = a })++exponentGrowth :: Lens' Retry Int+exponentGrowth = lens _retryGrowth (\s a -> s { _retryGrowth = a })++retryAttempts :: Lens' Retry Int+retryAttempts = lens _retryAttempts (\s a -> s { _retryAttempts = a })++retryCheck :: Lens' Retry (ServiceError -> Maybe Text)+retryCheck = lens _retryCheck (\s a -> s { _retryCheck = a })++-- | Signing algorithm specific metadata.+data Meta where+    Meta :: ToLog a => a -> Meta++instance ToLog Meta where+   build (Meta m) = build m++-- | A signed 'ClientRequest' and associated metadata specific+-- to the signing algorithm, tagged with the initial request type+-- to be able to obtain the associated response, 'Rs a'.+data Signed a = Signed+    { sgMeta    :: !Meta+    , sgRequest :: !ClientRequest+    }++type Algorithm a = Request a -> AuthEnv -> Region -> UTCTime -> Signed a++data Signer = Signer+    { sgSign    :: forall a. Algorithm a+    , sgPresign :: forall a. Seconds -> Algorithm a+    }+ -- | Attributes and functions specific to an AWS service.-data Service s = Service+data Service = Service     { _svcAbbrev   :: !Abbrev-    , _svcPrefix   :: ByteString-    , _svcVersion  :: ByteString-    , _svcEndpoint :: Region -> Endpoint-    , _svcTimeout  :: Maybe Seconds-    , _svcStatus   :: Status -> Bool-    , _svcError    :: Abbrev -> Status -> [Header] -> LazyByteString -> Error-    , _svcRetry    :: Retry+    , _svcSigner   :: !Signer+    , _svcPrefix   :: !ByteString+    , _svcVersion  :: !ByteString+    , _svcEndpoint :: !(Region -> Endpoint)+    , _svcTimeout  :: !(Maybe Seconds)+    , _svcCheck    :: !(Status -> Bool)+    , _svcError    :: !(Abbrev -> Status -> [Header] -> LazyByteString -> Error)+    , _svcRetry    :: !Retry     } +serviceSigner :: Lens' Service Signer+serviceSigner = lens _svcSigner (\s a -> s { _svcSigner = a })++serviceEndpoint :: Setter' Service Endpoint+serviceEndpoint = sets (\f s -> s { _svcEndpoint = \r -> f (_svcEndpoint s r) })++serviceTimeout :: Lens' Service (Maybe Seconds)+serviceTimeout = lens _svcTimeout (\s a -> s { _svcTimeout = a })++serviceCheck :: Lens' Service (Status -> Bool)+serviceCheck = lens _svcCheck (\s a -> s { _svcCheck = a })++serviceRetry :: Lens' Service Retry+serviceRetry = lens _svcRetry (\s a -> s { _svcRetry = a })++-- | Construct a 'ClientRequest' using common parameters such as TLS and prevent+-- throwing errors when receiving erroneous status codes in respones.+clientRequest :: Endpoint -> Maybe Seconds -> ClientRequest+clientRequest e t = def+    { Client.secure          = _endpointSecure e+    , Client.host            = _endpointHost   e+    , Client.port            = _endpointPort   e+    , Client.redirectCount   = 0+    , Client.checkStatus     = \_ _ _ -> Nothing+    , Client.responseTimeout = microseconds <$> t+    }+ -- | An unsigned request. data Request a = Request-    { _rqMethod    :: !StdMethod-    , _rqPath      :: !RawPath-    , _rqQuery     :: !QueryString-    , _rqHeaders   :: ![Header]-    , _rqBody      :: !RqBody+    { _rqService :: !Service+    , _rqMethod  :: !StdMethod+    , _rqPath    :: !RawPath+    , _rqQuery   :: !QueryString+    , _rqHeaders :: ![Header]+    , _rqBody    :: !RqBody     } -instance Show (Request a) where-    show = LBS8.unpack . Build.toLazyByteString . build--instance ToLog (Request a) where-    build Request{..} = buildLines-        [ "[Raw Request] {"-        , "  method    = "  <> build _rqMethod-        , "  path      = "  <> build (escapePath _rqPath)-        , "  query     = "  <> build _rqQuery-        , "  headers   = "  <> build _rqHeaders-        , "  body      = {"-        , "    hash    = "  <> build (digestToBase Base16 (bodySHA256 _rqBody))-        , "    payload =\n" <> build (bodyRequest _rqBody)-        , "  }"-        , "}"-        ]+rqService :: Lens' (Request a) Service+rqService = lens _rqService (\s a -> s { _rqService = a })  rqBody :: Lens' (Request a) RqBody rqBody = lens _rqBody (\s a -> s { _rqBody = a })@@ -374,70 +477,24 @@ rqQuery :: Lens' (Request a) QueryString rqQuery = lens _rqQuery (\s a -> s { _rqQuery = a }) -class AWSSigner v where-    signed :: v ~ Sg s-           => AuthEnv-           -> Region-           -> UTCTime-           -> Service s-           -> Request a-           -> Signed  v a--class AWSPresigner v where-    presigned :: v ~ Sg s-              => AuthEnv-              -> Region-              -> UTCTime-              -> Seconds-              -> Service s-              -> Request a-              -> Signed  v a---- | Signing metadata data specific to a signing algorithm.------ /Note:/ this is used for logging purposes, and is otherwise ignored.-data family Meta v :: *---- | A signed 'ClientRequest' and associated metadata specific to the signing--- algorithm that was used.-data Signed v a where-    Signed :: ToLog (Meta v)-           => { _sgMeta    :: Meta v-              , _sgRequest :: ClientRequest-              }-           -> Signed v a--sgMeta :: ToLog (Meta v) => Lens' (Signed v a) (Meta v)-sgMeta f (Signed m rq) = f m <&> \y -> Signed y rq---- Lens' specifically since 'a' cannot be substituted.-sgRequest :: Lens' (Signed v a) ClientRequest-sgRequest f (Signed m rq) = f rq <&> \y -> Signed m y--class AWSSigner (Sg a) => AWSService a where-    -- | The default signing algorithm for the service.-    type Sg a :: *--    service :: Sv p ~ a => Proxy p -> Service a+rqSign :: Algorithm a+rqSign x = sgSign (_svcSigner (_rqService x)) x -serviceOf :: forall a. AWSService (Sv a) => a -> Service (Sv a)-serviceOf = const $ service (Proxy :: Proxy a)+rqPresign :: Seconds -> Algorithm a+rqPresign ex x = sgPresign (_svcSigner (_rqService x)) ex x  type Response a = (Status, Rs a)  -- | Specify how a request can be de/serialised.-class AWSService (Sv a) => AWSRequest a where+class AWSRequest a where     -- | The successful, expected response associated with a request.     type Rs a :: * -    -- | The default sevice configuration for the request.-    type Sv a :: *-     request  :: a -> Request a     response :: MonadResource m              => Logger-             -> Service s-             -> Request a+             -> Service+             -> Proxy a              -> ClientResponse              -> m (Response a) @@ -531,8 +588,7 @@         "us-gov-west-1"      -> pure GovCloud         "fips-us-gov-west-1" -> pure GovCloudFIPS         "sa-east-1"          -> pure SaoPaulo-        e                    -> fail $-            "Failure parsing Region from " ++ show e+        e                    -> fromTextError $ "Failure parsing Region from " <> e  instance ToText Region where     toText = \case@@ -577,17 +633,16 @@         , ToText         ) -_Seconds :: Iso' Seconds Int-_Seconds = iso seconds Seconds- instance ToLog Seconds where-    build (Seconds n) = build n <> "s"+    build s = build (seconds s) <> "s"  seconds :: Seconds -> Int-seconds (Seconds n) = n+seconds (Seconds n)+    | n < 0     = 0+    | otherwise = n  microseconds :: Seconds -> Int-microseconds (Seconds n) = n * 1000000+microseconds =  (1000000 *) . seconds  _Coerce :: (Coercible a b, Coercible b a) => Iso' a b _Coerce = iso coerce coerce
test/Main.hs view
@@ -14,6 +14,7 @@ import qualified Test.AWS.Data.List    as List import qualified Test.AWS.Data.Maybe   as Maybe import qualified Test.AWS.Data.Numeric as Numeric+import qualified Test.AWS.Data.Path    as Path import qualified Test.AWS.Data.Time    as Time import qualified Test.AWS.Error        as Error import qualified Test.AWS.Sign.V4      as V4@@ -27,6 +28,10 @@             , Time.tests             , Base64.tests             , Maybe.tests+            ]++        , testGroup "paths"+            [ Path.tests             ]          , testGroup "collections"
test/Test/AWS/Arbitrary.hs view
@@ -18,17 +18,35 @@ import qualified Data.CaseInsensitive    as CI import           Data.String import qualified Data.Text               as Text+import qualified Data.Text.Encoding      as Text import           Data.Time import           Network.AWS.Data.Query import           Network.AWS.Prelude+import           Network.AWS.Sign.V4 import           Network.HTTP.Types import           Test.QuickCheck.Gen     as QC import qualified Test.QuickCheck.Unicode as Unicode import           Test.Tasty.QuickCheck +instance Arbitrary Service where+  arbitrary = svc <$> arbitrary+    where+      svc a = Service+        { _svcAbbrev   = a+        , _svcSigner   = v4+        , _svcPrefix   = Text.encodeUtf8 . Text.toLower $ toText a+        , _svcVersion  = "2012-01-01"+        , _svcEndpoint = defaultEndpoint (svc a)+        , _svcTimeout  = Nothing+        , _svcCheck    = const False+        , _svcError    = error "_svcError not defined."+        , _svcRetry    = error "_svcRetry not defined."+        }+ instance Arbitrary (Request ()) where     arbitrary = Request         <$> arbitrary+        <*> arbitrary         <*> arbitrary         <*> arbitrary         <*> arbitrary
test/Test/AWS/Sign/V4.hs view
@@ -37,64 +37,4 @@ --  test empty query  tests :: TestTree-tests = testGroup "v4"-    [ testGroup "canonical query"-        [ testProperty "empty" $ queryEmpty-        , testProperty "empty key values" $ queryEmptyKeyValues-        ]-    ]--queryEmpty :: Request () -> Signer -> Property-queryEmpty rq sg = property $-    mempty == toBS (metaCanonicalQuery . sign sg $ rq & rqQuery .~ mempty)--queryEmptyKeyValues :: [NonEmptyList Char] -> Property-queryEmptyKeyValues xs = property $ do-    rq <- arbitrary-    sg <- arbitrary--    let v4 = sign sg $ rq & rqQuery .~ Fold.foldMap (fromString . getNonEmpty) xs--        e  = sort $ map ((<> "=") . urlEncode True . BS8.pack . getNonEmpty) xs-        a  = BS8.split '&' . toBS $ metaCanonicalQuery v4--        m  = "Expected: " ++ show e ++ "\n" ++-              "Actual: "  ++ show a--    return . counterexample m $ e == a--newtype Signer = Signer { sign :: Request () -> Meta V4 }--instance Show Signer where-    show = const "V4"--instance Arbitrary Signer where-    arbitrary = do-        a   <- arbitrary-        reg <- arbitrary-        ts  <- arbitrary-        return $ Signer (_sgMeta . signed auth reg ts (testV4 a))--auth :: AuthEnv-auth = AuthEnv "access-key" "super-secret-key" Nothing Nothing--data TestV4--instance AWSService TestV4 where-    type Sg TestV4 = V4--    service = error "service not defined for TestV4."--testV4 :: Abbrev -> Service TestV4-testV4 a = svc-  where-    svc = Service-        { _svcAbbrev   = a-        , _svcPrefix   = Text.encodeUtf8 . Text.toLower $ toText a-        , _svcVersion  = "2012-01-01"-        , _svcEndpoint = defaultEndpoint svc-        , _svcTimeout  = Nothing-        , _svcStatus   = const False-        , _svcError    = error "_svcError not defined."-        , _svcRetry    = error "_svcRetry not defined."-        }+tests = testGroup "v4" []