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 }