{-# LANGUAGE TemplateHaskell #-}

-- | <http://strava.github.io/api/v3/oauth/>
module Strive.Types.Authentication
  ( TokenExchangeResponse(..)
  , DeauthorizationResponse(..)
  ) where

import Data.Aeson.TH (deriveFromJSON)
import Data.Text (Text)
import Strive.Internal.TH (options)
import Strive.Types.Athletes (AthleteSummary)

-- | <http://strava.github.io/api/v3/oauth/#example-response>
data TokenExchangeResponse = TokenExchangeResponse
  { TokenExchangeResponse -> Text
tokenExchangeResponse_accessToken :: Text
  , TokenExchangeResponse -> AthleteSummary
tokenExchangeResponse_athlete :: AthleteSummary
  }
  deriving Int -> TokenExchangeResponse -> ShowS
[TokenExchangeResponse] -> ShowS
TokenExchangeResponse -> String
(Int -> TokenExchangeResponse -> ShowS)
-> (TokenExchangeResponse -> String)
-> ([TokenExchangeResponse] -> ShowS)
-> Show TokenExchangeResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TokenExchangeResponse] -> ShowS
$cshowList :: [TokenExchangeResponse] -> ShowS
show :: TokenExchangeResponse -> String
$cshow :: TokenExchangeResponse -> String
showsPrec :: Int -> TokenExchangeResponse -> ShowS
$cshowsPrec :: Int -> TokenExchangeResponse -> ShowS
Show

$(deriveFromJSON options ''TokenExchangeResponse)

-- | <http://strava.github.io/api/v3/oauth/#example-response-1>
data DeauthorizationResponse = DeauthorizationResponse
  { DeauthorizationResponse -> Text
deauthorizationResponse_accessToken :: Text
  }
  deriving Int -> DeauthorizationResponse -> ShowS
[DeauthorizationResponse] -> ShowS
DeauthorizationResponse -> String
(Int -> DeauthorizationResponse -> ShowS)
-> (DeauthorizationResponse -> String)
-> ([DeauthorizationResponse] -> ShowS)
-> Show DeauthorizationResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeauthorizationResponse] -> ShowS
$cshowList :: [DeauthorizationResponse] -> ShowS
show :: DeauthorizationResponse -> String
$cshow :: DeauthorizationResponse -> String
showsPrec :: Int -> DeauthorizationResponse -> ShowS
$cshowsPrec :: Int -> DeauthorizationResponse -> ShowS
Show

$(deriveFromJSON options ''DeauthorizationResponse)