module Mollie.API
( Mollie
, Env
, createEnv
, runMollie
, Reader.liftIO
) where
import qualified Control.Monad.Reader as Reader
import qualified Data.Text as Text
import Mollie.API.Internal
import qualified Network.HTTP.Client as HTTP
import qualified Network.HTTP.Client.OpenSSL as HTTP
import qualified OpenSSL.Session as OpenSSL
createEnv :: Text.Text
-> IO Env
createEnv key = HTTP.withOpenSSL $ do
sslContext <- OpenSSL.context
manager <- HTTP.newManager . HTTP.opensslManagerSettings $ return sslContext
return Env
{ env_key = key
, env_manager = manager
}
runMollie :: Env -> Mollie a -> IO a
runMollie env query = Reader.runReaderT query env