@@ -22,9 +22,7 @@ import qualified Data.Attoparsec.ByteString.Char8 as A
22import Data.ByteString (ByteString)
22import Data.ByteString (ByteString)
23import qualified Data.ByteString.Char8 as BSC
23import qualified Data.ByteString.Char8 as BSC
24import qualified Data.ByteString.Lazy.Char8 as BSLC
24import qualified Data.ByteString.Lazy.Char8 as BSLC
25−import Data.Dependent.Sum (DSum (..))
26import Data.Functor.Identity
25import Data.Functor.Identity
27−import Data.Functor.Sum
28import Data.List (uncons)
26import Data.List (uncons)
29import Data.Map (Map)
27import Data.Map (Map)
30import qualified Data.Map as Map
28import qualified Data.Map as Map
@@ -81,8 +79,8 @@ run port serveStaticAsset backend frontend = do
81 runSnapWithCommandLineArgs $ do
79 runSnapWithCommandLineArgs $ do
82 getRouteWith validFullEncoder >>= \case
80 getRouteWith validFullEncoder >>= \case
83 Identity r -> case r of
81 Identity r -> case r of
84− InL backendRoute :=> Identity a -> serveRoute $ backendRoute :/ a
82+ FullRoute_Backend backendRoute :/ a -> serveRoute $ backendRoute :/ a
85− InR obeliskRoute :=> Identity a ->
83+ FullRoute_Frontend obeliskRoute :/ a ->
86 serveDefaultObeliskApp (mkRouteToUrl validFullEncoder) serveStaticAsset frontend publicConfigs $ obeliskRoute :/ a
84 serveDefaultObeliskApp (mkRouteToUrl validFullEncoder) serveStaticAsset frontend publicConfigs $ obeliskRoute :/ a
87 let conf = defRunConfig { _runConfig_redirectPort = port }
85 let conf = defRunConfig { _runConfig_redirectPort = port }
88 runWidget conf publicConfigs frontend validFullEncoder `finally` killThread backendTid
86 runWidget conf publicConfigs frontend validFullEncoder `finally` killThread backendTid
@@ -103,8 +101,8 @@ getConfigRoute configs = case Map.lookup "common/route" configs of
104 :: RunConfig
102 :: RunConfig
105 -> Map Text ByteString
103 -> Map Text ByteString
106− -> Frontend (R route)
104+ -> Frontend (R frontendRoute)
107− -> Encoder Identity Identity (R (Sum backendRoute (ObeliskRoute route))) PageName
105+ -> Encoder Identity Identity (R (FullRoute backendRoute frontendRoute)) PageName
109runWidget conf configs frontend validFullEncoder = do
107runWidget conf configs frontend validFullEncoder = do
110 uri <- either (fail . T.unpack) pure $ getConfigRoute configs
108 uri <- either (fail . T.unpack) pure $ getConfigRoute configs
@@ -123,11 +121,11 @@ runWidget conf configs frontend validFullEncoder = do
123 runSettingsSocket settings skt app)
121 runSettingsSocket settings skt app)
125obeliskApp
123obeliskApp
126− :: forall route backendRoute
124+ :: forall frontendRoute backendRoute
127 . Map Text ByteString
125 . Map Text ByteString
128 -> ConnectionOptions
126 -> ConnectionOptions
129− -> Frontend (R route)
127+ -> Frontend (R frontendRoute)
130− -> Encoder Identity Identity (R (Sum backendRoute (ObeliskRoute route))) PageName
128+ -> Encoder Identity Identity (R (FullRoute backendRoute frontendRoute)) PageName
132 -> Application
130 -> Application
133 -> IO Application
131 -> IO Application
@@ -145,12 +143,12 @@ obeliskApp configs opts frontend validFullEncoder uri backend = do
145 jsaddle <- jsaddleWithAppOr opts entryPoint $ \_ sendResponse -> sendResponse $ W.responseLBS H.status500 [("Content-Type", "text/plain")] "obeliskApp: jsaddle got a bad URL"
143 jsaddle <- jsaddleWithAppOr opts entryPoint $ \_ sendResponse -> sendResponse $ W.responseLBS H.status500 [("Content-Type", "text/plain")] "obeliskApp: jsaddle got a bad URL"
146 return $ \req sendResponse -> case tryDecode validFullEncoder (W.pathInfo req, mempty) of --TODO: Query strings
144 return $ \req sendResponse -> case tryDecode validFullEncoder (W.pathInfo req, mempty) of --TODO: Query strings
147 Identity r -> case r of
145 Identity r -> case r of
148− InR (ObeliskRoute_Resource ResourceRoute_JSaddleWarp) :=> Identity jsaddleRoute -> case jsaddleRoute of
146+ FullRoute_Frontend (ObeliskRoute_Resource ResourceRoute_JSaddleWarp) :/ jsaddleRoute -> case jsaddleRoute of
149 JSaddleWarpRoute_JavaScript :/ () -> sendResponse $ W.responseLBS H.status200 [("Content-Type", "application/javascript")] $ jsaddleJs' (Just jsaddleUri) False
147 JSaddleWarpRoute_JavaScript :/ () -> sendResponse $ W.responseLBS H.status200 [("Content-Type", "application/javascript")] $ jsaddleJs' (Just jsaddleUri) False
150 _ -> flip jsaddle sendResponse $ req
148 _ -> flip jsaddle sendResponse $ req
151 { W.pathInfo = fst $ encode jsaddleWarpRouteValidEncoder jsaddleRoute
149 { W.pathInfo = fst $ encode jsaddleWarpRouteValidEncoder jsaddleRoute
153− InR (ObeliskRoute_App appRouteComponent) :=> Identity appRouteRest -> do
151+ FullRoute_Frontend (ObeliskRoute_App appRouteComponent) :/ appRouteRest -> do
154 let cookies = maybe [] parseCookies $ lookup (fromString "Cookie") (W.requestHeaders req)
152 let cookies = maybe [] parseCookies $ lookup (fromString "Cookie") (W.requestHeaders req)
155 html <- renderJsaddleFrontend configs cookies (mkRouteToUrl validFullEncoder) (appRouteComponent :/ appRouteRest) frontend
153 html <- renderJsaddleFrontend configs cookies (mkRouteToUrl validFullEncoder) (appRouteComponent :/ appRouteRest) frontend
156 sendResponse $ W.responseLBS H.status200 [("Content-Type", staticRenderContentType)] $ BSLC.fromStrict html
154 sendResponse $ W.responseLBS H.status200 [("Content-Type", staticRenderContentType)] $ BSLC.fromStrict html