module Data.Proof.PublicTokenCreate
( HasCreatePublicTokenBody
, proveCreatePublicTokenBody
) where
import Data.Api.Types
import Data.Proof.Named
import Data.Text (Text)
data HasCreatePublicTokenBody plaidEnv institutionId productList plaidOptions = Proof
proveCreatePublicTokenBody
:: Named plaidEnv PlaidEnv
-> Named institutionId InstitutionId
-> Named productList [PlaidProduct]
-> Named options (Maybe PlaidOptions)
-> Either Text (HasCreatePublicTokenBody plaidEnv institutionId productList options)
proveCreatePublicTokenBody _ institutionId productList _
| null (unWrapNamed productList) =
Left "Initial products list cannot be empty"
| unWrapNamed institutionId `elem` validInstitutionIds
= Right Proof
| otherwise = Left (unInstitutionId (unWrapNamed institutionId)
<> " is not a valid institution id. Check the plaid documentation.")