hexpress-0.1.0.0: src/Network/Hexpress/Request.hs
module Network.Hexpress.Request where
import Network.Wai
import Network.HTTP.Types
import Network.Hexpress.Types
import Data.Text
import Data.Vault.Lazy
import Data.ByteString.Lazy.Char8 as LB
import Data.ByteString.Char8 as SB
import Data.Aeson as Aeson
getQueryString :: Server Query
getQueryString = do
req <- getRequest
return $ queryString req
getPath :: Server [Text]
getPath = do
req <- getRequest
return $ pathInfo req
getMethod :: Server Method
getMethod = do
req <- getRequest
return $ requestMethod req
getHeaders :: Server [Header]
getHeaders = do
req <- getRequest
return $ requestHeaders req
getVault :: Server Vault
getVault = do
req <- getRequest
return $ vault req
getBodyLazy :: Server LB.ByteString
getBodyLazy = do
req <- getRequest
performIO $ lazyRequestBody req
getBodyStrict :: Server LB.ByteString
getBodyStrict = do
req <- getRequest
performIO $ strictRequestBody req
getJSONObj :: Server (Maybe Aeson.Value)
getJSONObj = getJSON
getJSON :: FromJSON a => Server (Maybe a)
getJSON = do
body <- getBodyLazy
return $ Aeson.decode body