-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A client for Haskell programs to query a GraphQL API -- -- A client for Haskell programs to query a GraphQL API. @package graphql-client @version 1.1.1 -- | Imports needed for the generated API. module Data.GraphQL.Bootstrap -- | A space efficient, packed, unboxed Unicode text type. data Text (.=) :: (KeyValue kv, ToJSON v) => Text -> v -> kv infixr 8 .= -- | Create a Value from a list of name/value Pairs. If -- duplicate keys arise, earlier keys and their associated values win. object :: [Pair] -> Value -- | Make an enum type with the given constructors, that can be parsed from -- JSON. -- -- The FromJSON instance will match to a string value matching the -- constructor name, case-insensitive. -- --
-- mkEnum "State" ["OPEN", "CLOSED"] -- -- -- generates equivalent of: -- -- data State = OPEN | CLOSED deriving (...) -- -- genFromJSONEnum ''State -- -- genToJSONEnum ''State --mkEnum :: String -> [String] -> Q [Dec] -- | Monads in which IO computations may be embedded. Any monad -- built by applying a sequence of monad transformers to the IO -- monad will be an instance of this class. -- -- Instances should satisfy the following laws, which state that -- liftIO is a transformer of monads: -- -- class Monad m => MonadIO (m :: Type -> Type) -- | Definitions for GraphQL errors and exceptions. module Data.GraphQL.Error -- | An error in a GraphQL query. data GraphQLError GraphQLError :: Text -> Maybe [GraphQLErrorLoc] -> Maybe [Value] -> GraphQLError [message] :: GraphQLError -> Text [locations] :: GraphQLError -> Maybe [GraphQLErrorLoc] [path] :: GraphQLError -> Maybe [Value] -- | A location in an error in a GraphQL query. data GraphQLErrorLoc GraphQLErrorLoc :: Int -> Int -> GraphQLErrorLoc [errorLine] :: GraphQLErrorLoc -> Int [errorCol] :: GraphQLErrorLoc -> Int -- | An exception thrown as a result of an error in a GraphQL query. newtype GraphQLException GraphQLException :: [GraphQLError] -> GraphQLException instance Data.Aeson.Types.ToJSON.ToJSON Data.GraphQL.Error.GraphQLErrorLoc instance GHC.Generics.Generic Data.GraphQL.Error.GraphQLErrorLoc instance GHC.Classes.Eq Data.GraphQL.Error.GraphQLErrorLoc instance GHC.Show.Show Data.GraphQL.Error.GraphQLErrorLoc instance Data.Aeson.Types.FromJSON.FromJSON Data.GraphQL.Error.GraphQLError instance Data.Aeson.Types.ToJSON.ToJSON Data.GraphQL.Error.GraphQLError instance GHC.Generics.Generic Data.GraphQL.Error.GraphQLError instance GHC.Classes.Eq Data.GraphQL.Error.GraphQLError instance GHC.Show.Show Data.GraphQL.Error.GraphQLError instance GHC.Classes.Eq Data.GraphQL.Error.GraphQLException instance GHC.Exception.Type.Exception Data.GraphQL.Error.GraphQLException instance GHC.Show.Show Data.GraphQL.Error.GraphQLException instance Data.Aeson.Types.FromJSON.FromJSON Data.GraphQL.Error.GraphQLErrorLoc -- | Definitions needed by GraphQL queries. module Data.GraphQL.Query -- | A type class for defining GraphQL queries. -- -- Should be generated via the `graphql-codegen` command. Any manual -- instances needs to be certain that `getArgs query` satisfies the -- arguments defined in `getQueryText query`, and that the result adheres -- to `ResultSchema query`. class IsSchema (ResultSchema query) => GraphQLQuery query where { type family ResultSchema query :: Schema; } getQueryName :: GraphQLQuery query => query -> Text getQueryText :: GraphQLQuery query => query -> Text getArgs :: GraphQLQuery query => query -> Value -- | A quasiquoter that interpolates the given string as raw text. -- -- Trying to avoid a dependency on raw-strings-qq query :: QuasiQuoter -- | Definitions parsing responses from a GraphQL API. module Data.GraphQL.Result -- | A result of a GraphQL query. data GraphQLResult r GraphQLResult :: [GraphQLError] -> Maybe r -> GraphQLResult r [resultErrors] :: GraphQLResult r -> [GraphQLError] [resultResult] :: GraphQLResult r -> Maybe r -- | Get the errors in the GraphQLResult. getErrors :: GraphQLResult r -> [GraphQLError] -- | Get the result of the GraphQLResult. getResult :: GraphQLResult r -> Maybe r instance Data.Traversable.Traversable Data.GraphQL.Result.GraphQLResult instance Data.Foldable.Foldable Data.GraphQL.Result.GraphQLResult instance GHC.Base.Functor Data.GraphQL.Result.GraphQLResult instance GHC.Show.Show r => GHC.Show.Show (Data.GraphQL.Result.GraphQLResult r) instance Data.Aeson.Types.FromJSON.FromJSON r => Data.Aeson.Types.FromJSON.FromJSON (Data.GraphQL.Result.GraphQLResult r) -- | Defines the MonadGraphQLQuery type class, which defines how -- GraphQL queries should be run. module Data.GraphQL.Monad.Class -- | A type class for monads that can run GraphQL queries. class Monad m => MonadGraphQLQuery m runQuerySafe :: (MonadGraphQLQuery m, GraphQLQuery query, schema ~ ResultSchema query) => query -> m (GraphQLResult (Object schema)) -- | Runs the given query and returns the result, erroring if the query -- returned errors. runQuery :: (MonadIO m, MonadGraphQLQuery m, GraphQLQuery query, schema ~ ResultSchema query) => query -> m (Object schema) instance Data.GraphQL.Monad.Class.MonadGraphQLQuery m => Data.GraphQL.Monad.Class.MonadGraphQLQuery (Control.Monad.Trans.Reader.ReaderT r m) instance Data.GraphQL.Monad.Class.MonadGraphQLQuery m => Data.GraphQL.Monad.Class.MonadGraphQLQuery (Control.Monad.Trans.Except.ExceptT e m) instance Data.GraphQL.Monad.Class.MonadGraphQLQuery m => Data.GraphQL.Monad.Class.MonadGraphQLQuery (Control.Monad.Trans.Identity.IdentityT m) instance Data.GraphQL.Monad.Class.MonadGraphQLQuery m => Data.GraphQL.Monad.Class.MonadGraphQLQuery (Control.Monad.Trans.Maybe.MaybeT m) instance (GHC.Base.Monoid w, Data.GraphQL.Monad.Class.MonadGraphQLQuery m) => Data.GraphQL.Monad.Class.MonadGraphQLQuery (Control.Monad.Trans.RWS.Lazy.RWST r w s m) instance (GHC.Base.Monoid w, Data.GraphQL.Monad.Class.MonadGraphQLQuery m) => Data.GraphQL.Monad.Class.MonadGraphQLQuery (Control.Monad.Trans.RWS.Strict.RWST r w s m) instance Data.GraphQL.Monad.Class.MonadGraphQLQuery m => Data.GraphQL.Monad.Class.MonadGraphQLQuery (Control.Monad.Trans.State.Lazy.StateT s m) instance Data.GraphQL.Monad.Class.MonadGraphQLQuery m => Data.GraphQL.Monad.Class.MonadGraphQLQuery (Control.Monad.Trans.State.Strict.StateT s m) instance (GHC.Base.Monoid w, Data.GraphQL.Monad.Class.MonadGraphQLQuery m) => Data.GraphQL.Monad.Class.MonadGraphQLQuery (Control.Monad.Trans.Writer.Lazy.WriterT w m) instance (GHC.Base.Monoid w, Data.GraphQL.Monad.Class.MonadGraphQLQuery m) => Data.GraphQL.Monad.Class.MonadGraphQLQuery (Control.Monad.Trans.Writer.Strict.WriterT w m) -- | Defines the GraphQLQueryT monad transformer, which implements -- MonadGraphQLQuery to allow querying GraphQL APIs. module Data.GraphQL.Monad -- | The monad transformer type that should be used to run GraphQL queries. -- --
-- newtype MyMonad a = MyMonad { unMyMonad :: GraphQLQueryT IO a }
--
-- runMyMonad :: MyMonad a -> IO a
-- runMyMonad = runGraphQLQueryT graphQLSettings . unMyMonad
-- where
-- graphQLSettings = defaultGraphQLSettings
-- { url = "https://api.github.com/graphql"
-- , modifyReq = \req -> req
-- { requestHeaders =
-- (hAuthorization, "bearer my_github_token") : requestHeaders req
-- }
-- }
--
data GraphQLQueryT m a
-- | Run a GraphQLQueryT stack.
runGraphQLQueryT :: MonadIO m => GraphQLSettings -> GraphQLQueryT m a -> m a
-- | The settings for running GraphQLQueryT.
data GraphQLSettings
GraphQLSettings :: ManagerSettings -> String -> (Request -> Request) -> GraphQLSettings
-- | Uses TLS by default
[managerSettings] :: GraphQLSettings -> ManagerSettings
[url] :: GraphQLSettings -> String
[modifyReq] :: GraphQLSettings -> Request -> Request
-- | Default query settings.
defaultGraphQLSettings :: GraphQLSettings
instance Control.Monad.Trans.Class.MonadTrans Data.GraphQL.Monad.GraphQLQueryT
instance GHC.Base.Monad m => Control.Monad.Reader.Class.MonadReader Data.GraphQL.Monad.QueryState (Data.GraphQL.Monad.GraphQLQueryT m)
instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Data.GraphQL.Monad.GraphQLQueryT m)
instance GHC.Base.Monad m => GHC.Base.Monad (Data.GraphQL.Monad.GraphQLQueryT m)
instance GHC.Base.Applicative m => GHC.Base.Applicative (Data.GraphQL.Monad.GraphQLQueryT m)
instance GHC.Base.Functor m => GHC.Base.Functor (Data.GraphQL.Monad.GraphQLQueryT m)
instance Control.Monad.IO.Unlift.MonadUnliftIO m => Control.Monad.IO.Unlift.MonadUnliftIO (Data.GraphQL.Monad.GraphQLQueryT m)
instance Control.Monad.IO.Class.MonadIO m => Data.GraphQL.Monad.Class.MonadGraphQLQuery (Data.GraphQL.Monad.GraphQLQueryT m)
-- | Core functionality for querying GraphQL APIs.
module Data.GraphQL
-- | Defines test utilities for testing GraphQL queries.
module Data.GraphQL.TestUtils
data ResultMock query
ResultMock :: query -> Value -> ResultMock query
[query] :: ResultMock query -> query
[result] :: ResultMock query -> Value
mocked :: (Show query, GraphQLQuery query) => ResultMock query -> AnyResultMock
data MockQueryT m a
runMockQueryT :: Monad m => MockQueryT m a -> [AnyResultMock] -> m a
data AnyResultMock
instance GHC.Show.Show query => GHC.Show.Show (Data.GraphQL.TestUtils.ResultMock query)
instance Control.Monad.Trans.Class.MonadTrans Data.GraphQL.TestUtils.MockQueryT
instance GHC.Base.Monad m => Control.Monad.State.Class.MonadState [Data.GraphQL.TestUtils.AnyResultMock] (Data.GraphQL.TestUtils.MockQueryT m)
instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Data.GraphQL.TestUtils.MockQueryT m)
instance GHC.Base.Monad m => GHC.Base.Monad (Data.GraphQL.TestUtils.MockQueryT m)
instance GHC.Base.Monad m => GHC.Base.Applicative (Data.GraphQL.TestUtils.MockQueryT m)
instance GHC.Base.Functor m => GHC.Base.Functor (Data.GraphQL.TestUtils.MockQueryT m)
instance GHC.Show.Show Data.GraphQL.TestUtils.AnyResultMock
instance GHC.Base.Monad m => Data.GraphQL.Monad.Class.MonadGraphQLQuery (Data.GraphQL.TestUtils.MockQueryT m)