Shpadoinkle-router-0.2.0.0: A single page application rounter for Shpadoinkle based on Servant.

Safe HaskellNone
LanguageHaskell2010

Shpadoinkle.Router.Server

Description

Since the single page application URIs are specified with Servant, we can automate much of the process of serving the application with server-side rendering. This module provides the basic infrastructure for serving rendered HTML using the same code that would be used to render the same route on the client-side, ensuring a consistent rendering, whether a URI is accessed via a client-side popstate event or via the initial page load.

Synopsis

Documentation

toFile :: Piece -> ByteString -> File Source #

Helper to serve a ByteString as a file from the web application interface.

defaultSPAServerSettings Source #

Arguments

:: FilePath

Directory to try files

-> IO (Html m a)

Get the index.html page

-> StaticSettings 

Serve index.html generated from a Shpadoinkle view using the static backend, otherwise serve out of a directory.

class ServeRouter layout route where Source #

Serve the UI by generating a Servant Server from the SPA URIs

Methods

serveUI Source #

Arguments

:: FilePath

Where should we look for static assets?

-> (route -> IO (Html m a))

How shall we get the page based on the requested route?

-> (layout :>> route)

What is the relationship between URIs and routes?

-> Server layout 
Instances
ServeRouter Raw r Source # 
Instance details

Defined in Shpadoinkle.Router.Server

Methods

serveUI :: FilePath -> (r -> IO (Html m a)) -> (Raw :>> r) -> Server Raw Source #

(ServeRouter x r, ServeRouter y r) => ServeRouter (x :<|> y) r Source # 
Instance details

Defined in Shpadoinkle.Router.Server

Methods

serveUI :: FilePath -> (r -> IO (Html m a)) -> ((x :<|> y) :>> r) -> Server (x :<|> y) Source #

ServeRouter sub r => ServeRouter (QueryParam sym x :> sub) r Source # 
Instance details

Defined in Shpadoinkle.Router.Server

Methods

serveUI :: FilePath -> (r -> IO (Html m a)) -> ((QueryParam sym x :> sub) :>> r) -> Server (QueryParam sym x :> sub) Source #

ServeRouter sub r => ServeRouter (QueryParams sym x :> sub) r Source # 
Instance details

Defined in Shpadoinkle.Router.Server

Methods

serveUI :: FilePath -> (r -> IO (Html m a)) -> ((QueryParams sym x :> sub) :>> r) -> Server (QueryParams sym x :> sub) Source #

ServeRouter sub r => ServeRouter (QueryFlag sym :> sub) r Source # 
Instance details

Defined in Shpadoinkle.Router.Server

Methods

serveUI :: FilePath -> (r -> IO (Html m a)) -> ((QueryFlag sym :> sub) :>> r) -> Server (QueryFlag sym :> sub) Source #

ServeRouter sub r => ServeRouter (Capture sym x :> sub) r Source # 
Instance details

Defined in Shpadoinkle.Router.Server

Methods

serveUI :: FilePath -> (r -> IO (Html m a)) -> ((Capture sym x :> sub) :>> r) -> Server (Capture sym x :> sub) Source #

ServeRouter sub r => ServeRouter (path :> sub) r Source # 
Instance details

Defined in Shpadoinkle.Router.Server

Methods

serveUI :: FilePath -> (r -> IO (Html m a)) -> ((path :> sub) :>> r) -> Server (path :> sub) Source #