Update HTTPure to routing duplex
This commit is contained in:
@@ -2,20 +2,35 @@ module Examples.QueryParameters.Main where
|
||||
|
||||
import Prelude
|
||||
|
||||
import Effect.Console (log)
|
||||
import HTTPure (Request, ResponseM, ServerM, ok, serve, (!?), (!@))
|
||||
import Data.Generic.Rep (class Generic)
|
||||
import Data.Maybe (Maybe(..))
|
||||
import Effect.Class.Console (log)
|
||||
import HTTPure (Request, ResponseM, ServerM, notFound, ok, serve)
|
||||
import Routing.Duplex (RouteDuplex')
|
||||
import Routing.Duplex as RD
|
||||
import Routing.Duplex.Generic as G
|
||||
|
||||
data Route = Route { foo :: Boolean, bar :: Maybe String, baz :: Maybe String }
|
||||
|
||||
derive instance Generic Route _
|
||||
|
||||
route :: RouteDuplex' Route
|
||||
route = RD.root $ G.sum
|
||||
{ "Route": RD.params { foo: RD.flag <<< RD.string, bar: RD.optional <<< RD.string, baz: RD.optional <<< RD.string }
|
||||
}
|
||||
|
||||
-- | Specify the routes
|
||||
router :: Request -> ResponseM
|
||||
router { query }
|
||||
| query !? "foo" = ok "foo"
|
||||
| query !@ "bar" == "test" = ok "bar"
|
||||
| otherwise = ok $ query !@ "baz"
|
||||
router :: Request Route -> ResponseM
|
||||
router { route: (Route { foo: true }) } = ok "foo"
|
||||
router { route: (Route { bar: Just "test" }) } = ok "bar"
|
||||
router { route: (Route { bar: Just _ }) } = ok ""
|
||||
router { route: Route { baz: Just baz } } = ok $ baz
|
||||
router _ = notFound
|
||||
|
||||
-- | Boot up the server
|
||||
main :: ServerM
|
||||
main =
|
||||
serve 8080 router do
|
||||
serve 8080 { route, router, notFoundHandler: Nothing } do
|
||||
log " ┌───────────────────────────────────────┐"
|
||||
log " │ Server now up on port 8080 │"
|
||||
log " │ │"
|
||||
|
||||
Reference in New Issue
Block a user