on master help sign in
Serve frontend assets properly
commitcc5f5c2961c4eafec7c22d5628151a163375e551 authorRyan Trinkle <ryan.trinkle@gmail.com> dateSat 30 Jun 2018, 21:59 (8 years ago) parente279e99
2 files changed+6−32
lib/backend/src/Obelisk/Backend.hs+4−6 lib/route/src/Obelisk/Route.hs+2−26
lib/backend/src/Obelisk/Backend.hs+4−6
@@ -20,12 +20,11 @@ import Data.Monoid
2020import Data.Text (Text)
2121import qualified Data.Text as T
2222import Data.Text.Encoding
23−import Obelisk.Asset.Serve.Snap (serveAsset, serveAssets)
23+import Obelisk.Asset.Serve.Snap (serveAsset)
2424import Obelisk.Route
25−import Obelisk.Snap
2625import Reflex.Dom
2726import System.IO (hSetBuffering, stdout, stderr, BufferMode (..))
28−import Snap (httpServe, defaultConfig, commandLineConfig, route, getsRequest, rqPathInfo, rqQueryString, writeText, writeBS)
27+import Snap (httpServe, defaultConfig, commandLineConfig, getsRequest, rqPathInfo, rqQueryString, writeText, writeBS)
2928import Snap.Internal.Http.Server.Config (Config (accessLog, errorLog), ConfigLog (ConfigIoLog))
3029
3130--TODO: Add a link to a large explanation of the idea of using 'def'
@@ -66,11 +65,10 @@ backend routeEncoder cfg = do
6665 case parsed of
6766 Left e -> writeText e
6867 Right r -> case r of
69− ObeliskRoute_App _ :/ _ -> do
68+ ObeliskRoute_App _ :=> Identity _ -> do
7069 writeBS $ "<!DOCTYPE html>\n" <> indexHtml
7170 ObeliskRoute_Resource ResourceRoute_Static :=> Identity pathSegments -> serveAsset "static.assets" "static" $ T.unpack $ T.intercalate "/" pathSegments
72− ObeliskRoute_Resource ResourceRoute_Ghcjs :=> Identity ghcjsRoute -> case ghcjsRoute of
73− GhcjsRoute_AllJs :=> Identity () -> serveAsset "frontend.jsexe.assets" "frontend.jsexe" "all.js"
71+ ObeliskRoute_Resource ResourceRoute_Ghcjs :=> Identity pathSegments -> serveAsset "frontend.jsexe.assets" "frontend.jsexe" $ T.unpack $ T.intercalate "/" pathSegments
7472 ObeliskRoute_Resource ResourceRoute_JSaddleWarp :=> Identity _ -> error "asdf"
7573
7674blankLoader :: DomBuilder t m => m () -> m ()
lib/route/src/Obelisk/Route.hs+2−26
@@ -47,7 +47,6 @@ module Obelisk.Route
4747 , ResourceRoute (..)
4848 , JSaddleWarpRoute (..)
4949 , jsaddleWarpRouteEncoder
50− , GhcjsRoute (..)
5150 ) where
5251
5352import Prelude hiding ((.), id)
@@ -422,7 +421,7 @@ data ObeliskRoute :: (* -> *) -> * -> * where
422421
423422data ResourceRoute :: * -> * where
424423 ResourceRoute_Static :: ResourceRoute [Text] -- This [Text] represents the *path in our static files directory*, not necessarily the URL path that the asset gets served at (although that will often be "/static/this/text/thing")
425− ResourceRoute_Ghcjs :: ResourceRoute (R GhcjsRoute)
424+ ResourceRoute_Ghcjs :: ResourceRoute [Text]
426425 ResourceRoute_JSaddleWarp :: ResourceRoute (R JSaddleWarpRoute)
427426
428427--TODO: Generate this
@@ -487,7 +486,7 @@ resourceComponentEncoder = enum1Encoder $ \case
487486resourceRouteEncoder :: (MonadError Text check, MonadError Text parse) => ResourceRoute a -> Encoder check parse a PageName
488487resourceRouteEncoder = \case
489488 ResourceRoute_Static -> Encoder $ pure pathOnlyValidEncoder
490− ResourceRoute_Ghcjs -> ghcjsRouteEncoder
489+ ResourceRoute_Ghcjs -> Encoder $ pure pathOnlyValidEncoder
491490 ResourceRoute_JSaddleWarp -> jsaddleWarpRouteEncoder
492491
493492data JSaddleWarpRoute :: * -> * where
@@ -531,26 +530,6 @@ instance ShowTag JSaddleWarpRoute Identity where
531530 JSaddleWarpRoute_WebSocket -> showsPrec
532531 JSaddleWarpRoute_Sync -> showsPrec
533532
534−data GhcjsRoute :: * -> * where
535− GhcjsRoute_AllJs :: GhcjsRoute ()
536−
537−instance Universe (Some GhcjsRoute) where
538− universe =
539− [ Some.This GhcjsRoute_AllJs
540− ]
541−
542−instance ShowTag GhcjsRoute Identity where
543− showTaggedPrec = \case
544− GhcjsRoute_AllJs -> showsPrec
545−
546−ghcjsRouteEncoder :: (MonadError Text check, MonadError Text parse) => Encoder check parse (R GhcjsRoute) PageName
547−ghcjsRouteEncoder = pathComponentEncoder ghcjsRouteComponentEncoder $ \case
548− GhcjsRoute_AllJs -> endValidEncoder mempty
549−
550−ghcjsRouteComponentEncoder :: (MonadError Text check, MonadError Text parse) => Encoder check parse (Some GhcjsRoute) (Maybe Text)
551−ghcjsRouteComponentEncoder = enum1Encoder $ \case
552− GhcjsRoute_AllJs -> Just "all.js"
553−
554533instance Universe (Some appRoute) => Universe (Some (ObeliskRoute appRoute)) where
555534 universe = mconcat
556535 [ mapSome ObeliskRoute_App <$> universe
@@ -573,8 +552,5 @@ deriveGCompare ''ResourceRoute
573552deriveGShow ''JSaddleWarpRoute
574553deriveGEq ''JSaddleWarpRoute
575554deriveGCompare ''JSaddleWarpRoute
576−deriveGShow ''GhcjsRoute
577−deriveGEq ''GhcjsRoute
578−deriveGCompare ''GhcjsRoute
579555
580556--TODO: decodeURIComponent as appropriate