{-# LANGUAGE FlexibleContexts #-}
module Network.OAuth2.Experiment.Flows.RefreshTokenRequest where
import Data.Map.Strict (Map)
import Data.Map.Strict qualified as Map
import Data.Set (Set)
import Data.Text.Lazy (Text)
import Network.OAuth2 qualified as OAuth2
import Network.OAuth2.Experiment.Flows.TokenRequest
import Network.OAuth2.Experiment.Types
data RefreshTokenRequest = RefreshTokenRequest
{ RefreshTokenRequest -> RefreshToken
rrRefreshToken :: OAuth2.RefreshToken
, RefreshTokenRequest -> GrantTypeValue
rrGrantType :: GrantTypeValue
, RefreshTokenRequest -> Set Scope
rrScope :: Set Scope
, RefreshTokenRequest -> Maybe ClientId
rrClientId :: Maybe ClientId
, RefreshTokenRequest -> Maybe ClientSecret
rrClientSecret :: Maybe ClientSecret
}
instance ToQueryParam RefreshTokenRequest where
toQueryParam :: RefreshTokenRequest -> Map Text Text
toQueryParam :: RefreshTokenRequest -> Map Text Text
toQueryParam RefreshTokenRequest {Maybe ClientSecret
Maybe ClientId
Set Scope
RefreshToken
GrantTypeValue
rrRefreshToken :: RefreshTokenRequest -> RefreshToken
rrGrantType :: RefreshTokenRequest -> GrantTypeValue
rrScope :: RefreshTokenRequest -> Set Scope
rrClientId :: RefreshTokenRequest -> Maybe ClientId
rrClientSecret :: RefreshTokenRequest -> Maybe ClientSecret
rrRefreshToken :: RefreshToken
rrGrantType :: GrantTypeValue
rrScope :: Set Scope
rrClientId :: Maybe ClientId
rrClientSecret :: Maybe ClientSecret
..} =
[Map Text Text] -> Map Text Text
forall (f :: * -> *) k a.
(Foldable f, Ord k) =>
f (Map k a) -> Map k a
Map.unions
[ GrantTypeValue -> Map Text Text
forall a. ToQueryParam a => a -> Map Text Text
toQueryParam GrantTypeValue
rrGrantType
, Set Scope -> Map Text Text
forall a. ToQueryParam a => a -> Map Text Text
toQueryParam Set Scope
rrScope
, RefreshToken -> Map Text Text
forall a. ToQueryParam a => a -> Map Text Text
toQueryParam RefreshToken
rrRefreshToken
, Maybe ClientId -> Map Text Text
forall a. ToQueryParam a => a -> Map Text Text
toQueryParam Maybe ClientId
rrClientId
, Maybe ClientSecret -> Map Text Text
forall a. ToQueryParam a => a -> Map Text Text
toQueryParam Maybe ClientSecret
rrClientSecret
]
class HasClientAuthenticationMethod a => HasRefreshTokenRequest a where
mkRefreshTokenRequestParam :: a -> OAuth2.RefreshToken -> RefreshTokenRequest