{-# LANGUAGE CPP                        #-}
{-# LANGUAGE DataKinds                  #-}
{-# LANGUAGE DeriveFunctor              #-}
{-# LANGUAGE FlexibleContexts           #-}
{-# LANGUAGE FlexibleInstances          #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MultiParamTypeClasses      #-}
{-# LANGUAGE OverloadedStrings          #-}
{-# LANGUAGE RankNTypes                 #-}
{-# LANGUAGE TypeFamilies               #-}
{-# LANGUAGE UndecidableInstances       #-}
{-# LANGUAGE UndecidableSuperClasses    #-}
module Network.HTTP.ApiMaker.HeaderContent
  ( headerContentTypeJson
  , headerContentTypeMultipart
  , headerContentDispositionFile
  ) where

import qualified Data.Text          as T
import qualified Data.Text.Encoding as E
import           Network.HTTP.Req


-- | Option for specifying `application/json`.
headerContentTypeJson :: Option scheme
headerContentTypeJson :: Option scheme
headerContentTypeJson = ByteString -> ByteString -> Option scheme
forall (scheme :: Scheme).
ByteString -> ByteString -> Option scheme
header ByteString
"content-type" ByteString
"application/json"

-- | Option for specifying `multipart/form-data`.
headerContentTypeMultipart :: Option scheme
headerContentTypeMultipart :: Option scheme
headerContentTypeMultipart = ByteString -> ByteString -> Option scheme
forall (scheme :: Scheme).
ByteString -> ByteString -> Option scheme
header ByteString
"content-type" ByteString
"multipart/form-data"

-- | Option for specifying a file.
headerContentDispositionFile :: T.Text -> Option scheme
headerContentDispositionFile :: Text -> Option scheme
headerContentDispositionFile Text
filename = ByteString -> ByteString -> Option scheme
forall (scheme :: Scheme).
ByteString -> ByteString -> Option scheme
header ByteString
"Content-Disposition" (Text -> ByteString
E.encodeUtf8 (Text -> ByteString) -> Text -> ByteString
forall a b. (a -> b) -> a -> b
$ [Text] -> Text
T.concat [Text
"attachment; filename=\"", Text
filename, Text
"\""])