hyperbole-0.7.0: src/Web/Hyperbole/Effect/Request.hs
module Web.Hyperbole.Effect.Request where
import Effectful
import Web.Hyperbole.Data.URI (Path (..))
import Web.Hyperbole.Effect.Hyperbole
import Web.Hyperbole.Effect.Response (parseError)
import Web.Hyperbole.HyperView.Input (InputValue (..))
import Web.Hyperbole.Types.Request
{- | Return the request path
>>> reqPath
["users", "100"]
-}
reqPath :: (Hyperbole :> es) => Eff es Path
reqPath = (.path) <$> request
{- | Return the request body as a 'Form'
Prefer using Type-Safe 'Form's when possible
-}
formBody :: (Hyperbole :> es) => Eff es Form
formBody = do
(.form) <$> request
inputValue :: (InputValue a, Hyperbole :> es) => Eff es a
inputValue = do
t <- (.input) <$> request
case parseInputValue t of
Left err -> parseError $ "Input: " <> err
Right a -> pure a