module Network.HTTP.Dispatch.Core
( HTTPRequest(..)
, HTTPResponse(..)
, runRequest
, get
, post
, patch
, delete
, put
, simpleGet
, postString
, postAeson
) where
import qualified Data.Aeson as Aeson (ToJSON, encode)
import qualified Data.ByteString.Lazy as LBS
import qualified Data.ByteString.Lazy.Char8 as LBSC
import Network.HTTP.Dispatch.Request
import Network.HTTP.Dispatch.Types
type Url = String
get :: Url -> [Header] -> HTTPRequest
get url headers = HTTPRequest GET url headers Nothing
simpleGet :: Url -> HTTPRequest
simpleGet url = HTTPRequest GET url [] Nothing
post :: Url -> [Header] -> LBS.ByteString -> HTTPRequest
post url headers body = HTTPRequest POST url headers (pure body)
postString :: String -> [Header] -> String -> HTTPRequest
postString url headers body = HTTPRequest POST url headers (pure . LBSC.pack $ body)
postAeson :: Aeson.ToJSON a => Url -> [Header] -> a -> HTTPRequest
postAeson url headers body = HTTPRequest POST url headers (pure $ Aeson.encode body)
put :: String -> [Header] -> LBS.ByteString -> HTTPRequest
put url headers body = HTTPRequest PUT url headers (pure body)
delete :: String -> [Header] -> Maybe LBS.ByteString -> HTTPRequest
delete url headers = HTTPRequest DELETE url headers
patch :: String -> [Header] -> LBS.ByteString -> HTTPRequest
patch url headers body = HTTPRequest PATCH url headers (pure body)