diff --git a/config/routes b/config/routes index a1ade99..fa71767 100644 --- a/config/routes +++ b/config/routes @@ -1,4 +1,5 @@ / RootR GET +/marketplace/#PkgId MarketplaceR GET -- EOS API V0 /eos/v0/latest EosVersionR GET -- get eos information diff --git a/src/Application.hs b/src/Application.hs index d1a90ed..9df0c49 100644 --- a/src/Application.hs +++ b/src/Application.hs @@ -186,7 +186,7 @@ import Handler.Admin ( postPkgUploadR, ) import Handler.Eos (getEosR, getEosVersionR) -import Handler.Root(getRootR) +import Handler.Root(getRootR, getMarketplaceR) import Handler.Package import Lib.Ssl ( doesSslNeedRenew, diff --git a/src/Handler/Root.hs b/src/Handler/Root.hs index a21a600..76e9a15 100644 --- a/src/Handler/Root.hs +++ b/src/Handler/Root.hs @@ -4,8 +4,18 @@ import Yesod import Foundation import qualified Data.Text as T import Settings (AppSettings(registryHostname, marketplaceName)) +import Network.Wai (Request(pathInfo)) +import Lib.Types.Core (PkgId) getRootR :: HandlerFor RegistryCtx () getRootR = do (url, name) <- getsYesod $ (registryHostname &&& marketplaceName) . appSettings - redirect $ T.pack "https://marketplace.start9.com?api=" <> url <> T.pack "&name=" <> name \ No newline at end of file + redirect $ T.pack "https://marketplace.start9.com?api=" <> url <> T.pack "&name=" <> name + +getMarketplaceR :: PkgId -> HandlerFor RegistryCtx () +getMarketplaceR _ = do + (url, name) <- getsYesod $ (registryHostname &&& marketplaceName) . appSettings + req <- waiRequest + pathSegments <- pure $ pathInfo req + let pathPiece = "/" <> T.intercalate "/" pathSegments + redirect $ T.pack "https://marketplace.start9.com" <> pathPiece <> "?api=" <> url <> T.pack "&name=" <> name \ No newline at end of file