module Network.AWS.STS.Types
(
STS
, RESTError
, ns
, Credentials
, credentials
, cAccessKeyId
, cExpiration
, cSecretAccessKey
, cSessionToken
, FederatedUser
, federatedUser
, fuArn
, fuFederatedUserId
, AssumedRoleUser
, assumedRoleUser
, aruArn
, aruAssumedRoleId
) where
import Network.AWS.Prelude
import Network.AWS.Signing
import qualified GHC.Exts
data STS
instance AWSService STS where
type Sg STS = V4
type Er STS = RESTError
service = service'
where
service' :: Service STS
service' = Service
{ _svcAbbrev = "STS"
, _svcPrefix = "sts"
, _svcVersion = "2011-06-15"
, _svcTargetPrefix = Nothing
, _svcJSONVersion = Nothing
, _svcHandle = handle
, _svcRetry = retry
}
handle :: Status
-> Maybe (LazyByteString -> ServiceError RESTError)
handle = restError statusSuccess service'
retry :: Retry STS
retry = Exponential
{ _retryBase = 0.05
, _retryGrowth = 2
, _retryAttempts = 5
, _retryCheck = check
}
check :: Status
-> RESTError
-> Bool
check (statusCode -> s) (awsErrorCode -> e)
| s == 400 && "Throttling" == e = True
| s == 500 = True
| s == 509 = True
| s == 503 = True
| otherwise = False
ns :: Text
ns = "https://sts.amazonaws.com/doc/2011-06-15/"
data Credentials = Credentials
{ _cAccessKeyId :: Text
, _cExpiration :: ISO8601
, _cSecretAccessKey :: Text
, _cSessionToken :: Text
} deriving (Eq, Ord, Read, Show)
credentials :: Text
-> Text
-> Text
-> UTCTime
-> Credentials
credentials p1 p2 p3 p4 = Credentials
{ _cAccessKeyId = p1
, _cSecretAccessKey = p2
, _cSessionToken = p3
, _cExpiration = withIso _Time (const id) p4
}
cAccessKeyId :: Lens' Credentials Text
cAccessKeyId = lens _cAccessKeyId (\s a -> s { _cAccessKeyId = a })
cExpiration :: Lens' Credentials UTCTime
cExpiration = lens _cExpiration (\s a -> s { _cExpiration = a }) . _Time
cSecretAccessKey :: Lens' Credentials Text
cSecretAccessKey = lens _cSecretAccessKey (\s a -> s { _cSecretAccessKey = a })
cSessionToken :: Lens' Credentials Text
cSessionToken = lens _cSessionToken (\s a -> s { _cSessionToken = a })
instance FromXML Credentials where
parseXML x = Credentials
<$> x .@ "AccessKeyId"
<*> x .@ "Expiration"
<*> x .@ "SecretAccessKey"
<*> x .@ "SessionToken"
instance ToQuery Credentials where
toQuery Credentials{..} = mconcat
[ "AccessKeyId" =? _cAccessKeyId
, "Expiration" =? _cExpiration
, "SecretAccessKey" =? _cSecretAccessKey
, "SessionToken" =? _cSessionToken
]
data FederatedUser = FederatedUser
{ _fuArn :: Text
, _fuFederatedUserId :: Text
} deriving (Eq, Ord, Read, Show)
federatedUser :: Text
-> Text
-> FederatedUser
federatedUser p1 p2 = FederatedUser
{ _fuFederatedUserId = p1
, _fuArn = p2
}
fuArn :: Lens' FederatedUser Text
fuArn = lens _fuArn (\s a -> s { _fuArn = a })
fuFederatedUserId :: Lens' FederatedUser Text
fuFederatedUserId =
lens _fuFederatedUserId (\s a -> s { _fuFederatedUserId = a })
instance FromXML FederatedUser where
parseXML x = FederatedUser
<$> x .@ "Arn"
<*> x .@ "FederatedUserId"
instance ToQuery FederatedUser where
toQuery FederatedUser{..} = mconcat
[ "Arn" =? _fuArn
, "FederatedUserId" =? _fuFederatedUserId
]
data AssumedRoleUser = AssumedRoleUser
{ _aruArn :: Text
, _aruAssumedRoleId :: Text
} deriving (Eq, Ord, Read, Show)
assumedRoleUser :: Text
-> Text
-> AssumedRoleUser
assumedRoleUser p1 p2 = AssumedRoleUser
{ _aruAssumedRoleId = p1
, _aruArn = p2
}
aruArn :: Lens' AssumedRoleUser Text
aruArn = lens _aruArn (\s a -> s { _aruArn = a })
aruAssumedRoleId :: Lens' AssumedRoleUser Text
aruAssumedRoleId = lens _aruAssumedRoleId (\s a -> s { _aruAssumedRoleId = a })
instance FromXML AssumedRoleUser where
parseXML x = AssumedRoleUser
<$> x .@ "Arn"
<*> x .@ "AssumedRoleId"
instance ToQuery AssumedRoleUser where
toQuery AssumedRoleUser{..} = mconcat
[ "Arn" =? _aruArn
, "AssumedRoleId" =? _aruAssumedRoleId
]