module Linnet.Endpoints.Methods
( get
, post
, put
, patch
, delete
, head'
, trace'
, connect
, options
) where
import Linnet.Endpoint
import Linnet.Input
import Network.HTTP.Types
import Network.Wai (requestMethod)
methodEndpoint :: Method -> Endpoint m a -> Endpoint m a
methodEndpoint method underlying =
Endpoint
{ runEndpoint =
\input ->
if (requestMethod . request) input == method
then runEndpoint underlying input
else NotMatched
, toString = show method ++ " " ++ toString underlying
}
get :: Endpoint m a -> Endpoint m a
get = methodEndpoint methodGet
post :: Endpoint m a -> Endpoint m a
post = methodEndpoint methodPost
put :: Endpoint m a -> Endpoint m a
put = methodEndpoint methodPut
patch :: Endpoint m a -> Endpoint m a
patch = methodEndpoint methodPatch
delete :: Endpoint m a -> Endpoint m a
delete = methodEndpoint methodDelete
head' :: Endpoint m a -> Endpoint m a
head' = methodEndpoint methodHead
trace' :: Endpoint m a -> Endpoint m a
trace' = methodEndpoint methodTrace
connect :: Endpoint m a -> Endpoint m a
connect = methodEndpoint methodConnect
options :: Endpoint m a -> Endpoint m a
options = methodEndpoint methodOptions