module TD.Query.CheckOauthRequestMatchCode
  (CheckOauthRequestMatchCode(..)
  , defaultCheckOauthRequestMatchCode
  ) where

import qualified Data.Aeson as A
import qualified Data.Aeson.Types as AT
import qualified TD.Lib.Internal as I
import qualified Data.Text as T

-- | Checks a match-code for an OAuth authorization request. If fails, then the authorization request has failed. Otherwise, authorization confirmation dialog must be shown and the link must be processed using acceptOauthRequest or declineOauthRequest. Returns 'TD.Data.Ok.Ok'
data CheckOauthRequestMatchCode
  = CheckOauthRequestMatchCode
    { CheckOauthRequestMatchCode -> Maybe Text
url        :: Maybe T.Text -- ^ URL of the OAuth deep link
    , CheckOauthRequestMatchCode -> Maybe Text
match_code :: Maybe T.Text -- ^ The matching code chosen by the user
    }
  deriving (CheckOauthRequestMatchCode -> CheckOauthRequestMatchCode -> Bool
(CheckOauthRequestMatchCode -> CheckOauthRequestMatchCode -> Bool)
-> (CheckOauthRequestMatchCode
    -> CheckOauthRequestMatchCode -> Bool)
-> Eq CheckOauthRequestMatchCode
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CheckOauthRequestMatchCode -> CheckOauthRequestMatchCode -> Bool
== :: CheckOauthRequestMatchCode -> CheckOauthRequestMatchCode -> Bool
$c/= :: CheckOauthRequestMatchCode -> CheckOauthRequestMatchCode -> Bool
/= :: CheckOauthRequestMatchCode -> CheckOauthRequestMatchCode -> Bool
Eq, Int -> CheckOauthRequestMatchCode -> ShowS
[CheckOauthRequestMatchCode] -> ShowS
CheckOauthRequestMatchCode -> String
(Int -> CheckOauthRequestMatchCode -> ShowS)
-> (CheckOauthRequestMatchCode -> String)
-> ([CheckOauthRequestMatchCode] -> ShowS)
-> Show CheckOauthRequestMatchCode
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CheckOauthRequestMatchCode -> ShowS
showsPrec :: Int -> CheckOauthRequestMatchCode -> ShowS
$cshow :: CheckOauthRequestMatchCode -> String
show :: CheckOauthRequestMatchCode -> String
$cshowList :: [CheckOauthRequestMatchCode] -> ShowS
showList :: [CheckOauthRequestMatchCode] -> ShowS
Show)

instance I.ShortShow CheckOauthRequestMatchCode where
  shortShow :: CheckOauthRequestMatchCode -> String
shortShow
    CheckOauthRequestMatchCode
      { url :: CheckOauthRequestMatchCode -> Maybe Text
url        = Maybe Text
url_
      , match_code :: CheckOauthRequestMatchCode -> Maybe Text
match_code = Maybe Text
match_code_
      }
        = String
"CheckOauthRequestMatchCode"
          String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
          [ String
"url"        String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
url_
          , String
"match_code" String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
match_code_
          ]

instance AT.ToJSON CheckOauthRequestMatchCode where
  toJSON :: CheckOauthRequestMatchCode -> Value
toJSON
    CheckOauthRequestMatchCode
      { url :: CheckOauthRequestMatchCode -> Maybe Text
url        = Maybe Text
url_
      , match_code :: CheckOauthRequestMatchCode -> Maybe Text
match_code = Maybe Text
match_code_
      }
        = [Pair] -> Value
A.object
          [ Key
"@type"      Key -> Value -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
A..= Text -> Value
AT.String Text
"checkOauthRequestMatchCode"
          , Key
"url"        Key -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
A..= Maybe Text
url_
          , Key
"match_code" Key -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
A..= Maybe Text
match_code_
          ]

defaultCheckOauthRequestMatchCode :: CheckOauthRequestMatchCode
defaultCheckOauthRequestMatchCode :: CheckOauthRequestMatchCode
defaultCheckOauthRequestMatchCode =
  CheckOauthRequestMatchCode
    { url :: Maybe Text
url        = Maybe Text
forall a. Maybe a
Nothing
    , match_code :: Maybe Text
match_code = Maybe Text
forall a. Maybe a
Nothing
    }