packages feed

morpheus-graphql-client-0.21.0: src/Data/Morpheus/Client/Fetch/GQLClient.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE NoImplicitPrelude #-}

module Data.Morpheus.Client.Fetch.GQLClient
  ( GQLClient (..),
    withHeaders,
    Headers,
    Header,
  )
where

import Relude hiding (ByteString)

type Headers = Map Text Text

type Header = (Text, Text)

data GQLClient = GQLClient
  { clientHeaders :: Headers,
    clientURI :: String
  }

instance IsString GQLClient where
  fromString clientURI =
    GQLClient
      { clientURI,
        clientHeaders = fromList [("Content-Type", "application/json")]
      }

withHeaders :: GQLClient -> [Header] -> GQLClient
withHeaders GQLClient {..} headers = GQLClient {clientHeaders = clientHeaders <> fromList headers, ..}