-- | Blockfrost client version via user agent header
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE OverloadedStrings #-}
module Blockfrost.Client.UserAgent () where
import Blockfrost.Util.UserAgent
import Data.CaseInsensitive (mk)
import Data.Proxy (Proxy (..))
import Data.Sequence ((<|))
import Servant.API ((:>))
import Servant.Client.Core (Client, HasClient (..), requestHeaders)
instance {-# OVERLAPS #-} (HasClient m api) => HasClient m (UserAgent :> api) where
type Client m (UserAgent :> api) = Client m api
clientWithRoute m _ req
= clientWithRoute m (Proxy :: Proxy api)
$ req { requestHeaders = (mk "User-Agent", userAgent) <| requestHeaders req }
hoistClientMonad pm _ nt = hoistClientMonad pm (Proxy :: Proxy api) nt