module PayPal.Adaptive.Core.Client where
import Data.Aeson.TH
import Data.Aeson.Types (camelTo)
import Import
data Client = Client
{ _clAppId :: Text
, _clUserId :: Text
, _clEnvironment :: Environment
, _clPassword :: Text
, _clSignature :: Text
, _clAccountEmail :: Text
} deriving (Eq, Show)
data Environment = Sandbox | Production deriving (Eq, Show, Read)
$(deriveJSON defaultOptions { fieldLabelModifier = camelTo '_' . drop 3 } ''Client)
$(deriveJSON defaultOptions { constructorTagModifier = id } ''Environment)
$(makeLenses ''Client)
$(makePrisms ''Environment)