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 +1/−1
- src/Network/AWS/Data/Headers.hs +4/−0
- src/Network/AWS/Data/Log.hs +16/−13
- src/Network/AWS/Data/Path.hs +6/−2
- src/Network/AWS/Data/Text.hs +5/−5
- src/Network/AWS/Endpoint.hs +34/−7
- src/Network/AWS/Error.hs +6/−14
- src/Network/AWS/Prelude.hs +5/−3
- src/Network/AWS/Request.hs +47/−42
- src/Network/AWS/Response.hs +20/−19
- src/Network/AWS/Sign/V2.hs +42/−42
- src/Network/AWS/Sign/V4.hs +73/−61
- src/Network/AWS/Types.hs +188/−133
- test/Main.hs +5/−0
- test/Test/AWS/Arbitrary.hs +18/−0
- test/Test/AWS/Sign/V4.hs +1/−61
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" []