packages feed

mudbath-0.0.3: Http.hs

{-# LANGUAGE OverloadedStrings #-}

module Http
    ( httpPOST
    ) where


import           Control.Monad

import           Data.Aeson
import           Data.Text
import qualified Data.Text                   as T
import qualified Data.ByteString.Char8       as C
import qualified Data.ByteString             as BS

import           Network.HTTP.Conduit (RequestBody(..), Request(requestBody,requestHeaders,method), httpLbs, parseUrl, withManager, applyBasicAuth)
import           Network.HTTP.Types.Method (methodPost)



httpPOST :: (ToJSON a) => Text -> Text -> a -> IO ()
httpPOST url token obj = do
    req0 <- parseUrl (T.unpack url)
    void $ withManager $ httpLbs (req1 req0)
  where
    body         = RequestBodyLBS $ encode obj
    userAgent    = ("User-Agent", BS.concat [ "mudbath/0" ])
    contentType  = ("Content-Type","application/json")
    acceptHeader = ("Accept", "application/vnd.github.cannonball-preview+json")
    req1         = \req -> applyBasicAuth (C.pack $ T.unpack token) "x-oauth-basic" $ req { Network.HTTP.Conduit.method = methodPost, requestBody = body, requestHeaders = userAgent : contentType : acceptHeader : requestHeaders req }