paddle-0.1.0.0: src/Paddle/Env.hs
module Paddle.Env where
import Prelude ()
import Protolude
import qualified OpenSSL as SSL
import qualified OpenSSL.EVP.PKey as SSL
import qualified OpenSSL.PEM as SSL
data PaddleSecrets = PaddleSecrets
{ paddlePublicKey :: Text -- ^ despite being a public key this must remain secret or anyone who has it can call our webhooks
, paddleApiKey :: Text
, paddleVendorId :: Int
} deriving (Eq)
-- | Various keys for Paddle. These should all be kept secret.
data Env = Env
{ pctxPubKey :: SSL.SomePublicKey
, pctxVendorId :: Int
, pctxApiKey :: Text
} deriving (Eq)
init :: (MonadIO m) => PaddleSecrets -> m Env
init secrets = do
pubKey <- liftIO $ SSL.withOpenSSL $ SSL.readPublicKey (toS (paddlePublicKey secrets))
return Env
{ pctxPubKey = pubKey
, pctxVendorId = paddleVendorId secrets
, pctxApiKey = paddleApiKey secrets
}