packages feed

morley-client-0.1.0: src/Morley/Client/Env.hs

-- SPDX-FileCopyrightText: 2020 Tocqueville Group
--
-- SPDX-License-Identifier: LicenseRef-MIT-TQ

-- | Runtime environment for @morley-client@.

module Morley.Client.Env
  ( MorleyClientEnv' (..)

  -- * Lens
  , mceTezosClientL
  , mceLogActionL
  , mceSecretKeyL
  , mceClientEnvL
  ) where

import Control.Lens (lens)
import Morley.Util.Lens (makeLensesWith, postfixLFields)
import Servant.Client (ClientEnv)

import qualified Morley.Tezos.Crypto.Ed25519 as Ed25519

import Morley.Client.Logging (ClientLogAction)
import Morley.Client.TezosClient.Types

-- | Runtime environment for morley client.
data MorleyClientEnv' m = MorleyClientEnv
  { mceTezosClient :: TezosClientEnv
  -- ^ Environment for @tezos-client@.
  , mceLogAction :: ClientLogAction m
  -- ^ Action used to log messages.
  , mceSecretKey :: Maybe Ed25519.SecretKey
  -- ^ Pass if you want to sign operations manually or leave it
  -- to tezos-client
  , mceClientEnv :: ClientEnv
  -- ^ Environment necessary to make HTTP calls.
  }

makeLensesWith postfixLFields ''MorleyClientEnv'

instance HasTezosClientEnv (MorleyClientEnv' m) where
  tezosClientEnvL =
    lens mceTezosClient (\mce tce -> mce { mceTezosClient = tce })