miso
Copyright(C) 2016-2025 David M. Johnson
LicenseBSD3-style (see the file LICENSE)
MaintainerDavid M. Johnson <code@dmj.io>
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Miso.Router

Description

 
Synopsis

Classes

class HasRouter (layout :: k) where Source #

This is similar to the HasServer class from servant-server. It is the class responsible for making API combinators routable. RouteT is used to build up the handler types. Router is returned.

Associated Types

type RouteT (layout :: k) a Source #

Type family for route dispatch

Methods

mkRouter :: Proxy layout -> Proxy a -> RouteT layout a -> Router a Source #

Transform a mkRouter handler into a Router.

Instances

Instances details
HasRouter Raw Source #

Raw

Instance details

Defined in Miso.Router

Associated Types

type RouteT Raw x 
Instance details

Defined in Miso.Router

type RouteT Raw x = x

Methods

mkRouter :: Proxy Raw -> Proxy a -> RouteT Raw a -> Router a Source #

HasRouter (View a :: Type) Source #

View

Instance details

Defined in Miso.Router

Methods

mkRouter :: Proxy (View a) -> Proxy a0 -> RouteT (View a) a0 -> Router a0 Source #

(HasRouter x, HasRouter y) => HasRouter (x :<|> y :: Type) Source #

Alternative

Instance details

Defined in Miso.Router

Methods

mkRouter :: Proxy (x :<|> y) -> Proxy a -> RouteT (x :<|> y) a -> Router a Source #

(HasRouter sublayout, KnownSymbol path) => HasRouter (path :> sublayout :: Type) Source #

Path

Instance details

Defined in Miso.Router

Methods

mkRouter :: Proxy (path :> sublayout) -> Proxy a -> RouteT (path :> sublayout) a -> Router a Source #

(HasRouter sublayout, FromHttpApiData x) => HasRouter (Capture sym x :> sublayout :: Type) Source #

Capture

Instance details

Defined in Miso.Router

Methods

mkRouter :: Proxy (Capture sym x :> sublayout) -> Proxy a -> RouteT (Capture sym x :> sublayout) a -> Router a Source #

HasRouter sublayout => HasRouter (Header sym x :> sublayout :: Type) Source #

Header

Instance details

Defined in Miso.Router

Methods

mkRouter :: Proxy (Header sym x :> sublayout) -> Proxy a -> RouteT (Header sym x :> sublayout) a -> Router a Source #

(HasRouter sublayout, KnownSymbol sym) => HasRouter (QueryFlag sym :> sublayout :: Type) Source #

QueryFlag

Instance details

Defined in Miso.Router

Methods

mkRouter :: Proxy (QueryFlag sym :> sublayout) -> Proxy a -> RouteT (QueryFlag sym :> sublayout) a -> Router a Source #

(HasRouter sublayout, FromHttpApiData x, KnownSymbol sym) => HasRouter (QueryParam sym x :> sublayout :: Type) Source #

QueryParam

Instance details

Defined in Miso.Router

Methods

mkRouter :: Proxy (QueryParam sym x :> sublayout) -> Proxy a -> RouteT (QueryParam sym x :> sublayout) a -> Router a Source #

(HasRouter sublayout, FromHttpApiData x, KnownSymbol sym) => HasRouter (QueryParams sym x :> sublayout :: Type) Source #

QueryParams

Instance details

Defined in Miso.Router

Methods

mkRouter :: Proxy (QueryParams sym x :> sublayout) -> Proxy a -> RouteT (QueryParams sym x :> sublayout) a -> Router a Source #

HasRouter (Verb m s c a :: Type) Source #

Verb

Instance details

Defined in Miso.Router

Methods

mkRouter :: Proxy (Verb m s c a) -> Proxy a0 -> RouteT (Verb m s c a) a0 -> Router a0 Source #

Types

data RoutingError Source #

When routing, the router may fail to match a location.

Constructors

Fail 

data Router a Source #

A Router contains the information necessary to execute a handler.

Routing

route :: forall {k} (layout :: k) m a. HasRouter layout => Proxy layout -> RouteT layout (m -> a) -> (m -> URI) -> m -> Either RoutingError a Source #

Executes router This is most likely the function you want to use. See haskell-miso.orgsharedCommon.hs for usage.