mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-16 18:42:30 +03:00
e0c0043e76
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9284 GitOrigin-RevId: 2f2cf2ad01900a54e4bdb970205ac0ef313c7e00
38 lines
1.3 KiB
Haskell
38 lines
1.3 KiB
Haskell
-- | Network service provider.
|
|
--
|
|
-- This module defines a Service (see Note [Services]) that provides access to
|
|
-- the network; for now, that only means providing a HTTP Manager. This is
|
|
-- consequentlt a simple analogue to `(MonadReader r m, Has Manager r)`, but
|
|
-- could be updated to either encompass other network utilities, or to provide a
|
|
-- more restricted interface if deemed useful. Alternatively this could be
|
|
-- removed altogether if all network calls were to be hidden behind more
|
|
-- specific services.
|
|
module Hasura.Services.Network
|
|
( ProvidesNetwork (..),
|
|
)
|
|
where
|
|
|
|
import Hasura.Prelude
|
|
import Hasura.Tracing
|
|
import Network.HTTP.Client qualified as HTTP
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
class (Monad m) => ProvidesNetwork m where
|
|
askHTTPManager :: m HTTP.Manager
|
|
|
|
instance (ProvidesNetwork m) => ProvidesNetwork (ReaderT r m) where
|
|
askHTTPManager = lift askHTTPManager
|
|
|
|
instance (Monoid w, ProvidesNetwork m) => ProvidesNetwork (WriterT w m) where
|
|
askHTTPManager = lift askHTTPManager
|
|
|
|
instance (ProvidesNetwork m) => ProvidesNetwork (StateT s m) where
|
|
askHTTPManager = lift askHTTPManager
|
|
|
|
instance (ProvidesNetwork m) => ProvidesNetwork (ExceptT e m) where
|
|
askHTTPManager = lift askHTTPManager
|
|
|
|
instance (ProvidesNetwork m) => ProvidesNetwork (TraceT m) where
|
|
askHTTPManager = lift askHTTPManager
|