Skip to content

Commit

Permalink
API: Serve static files
Browse files Browse the repository at this point in the history
  • Loading branch information
j-mueller committed Jan 6, 2025
1 parent eb6c1fe commit a1ccbba
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 5 deletions.
5 changes: 3 additions & 2 deletions src/lib/Wst/Cli.hs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import Control.Monad.IO.Class (MonadIO (..))
import Convex.Wallet.Operator (OperatorConfigSigning)
import Convex.Wallet.Operator qualified as Operator
import Data.Functor.Identity (Identity)
import Data.Maybe (fromMaybe)
import Data.Proxy (Proxy)
import Data.String (IsString (..))
import Options.Applicative (customExecParser, disambiguate, helper, idm, info,
Expand Down Expand Up @@ -55,6 +56,6 @@ deploy config = do
pure ()

startServer :: (MonadIO m, MonadLogger m) => Env.CombinedEnv Proxy Identity Proxy Identity w -> Server.ServerArgs -> m ()
startServer env' serverArgs@ServerArgs{saPort} = do
logInfo $ "starting server" :# ["port" .= saPort]
startServer env' serverArgs@ServerArgs{saPort, saStaticFiles} = do
logInfo $ "starting server" :# ["port" .= saPort, "static_files" .= fromMaybe "(no static files)" saStaticFiles]
liftIO (Server.runServer env' serverArgs)
16 changes: 13 additions & 3 deletions src/lib/Wst/Server.hs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
module Wst.Server(
runServer,
ServerArgs(..),
CombinedAPI,
defaultServerArgs
) where

Expand All @@ -19,8 +20,9 @@ import Data.Data (Proxy (..))
import Network.Wai.Handler.Warp qualified as Warp
import PlutusTx.Prelude qualified as P
import Servant (Server, ServerT)
import Servant.API (NoContent (..), (:<|>) (..))
import Servant.API (NoContent (..), Raw, (:<|>) (..))
import Servant.Server (hoistServer, serve)
import Servant.Server.StaticFiles (serveDirectoryWebApp)
import SmartTokens.Types.PTokenDirectory (blnKey)
import Wst.App (WstApp, runWstAppServant)
import Wst.AppError (AppError)
Expand All @@ -34,6 +36,12 @@ import Wst.Server.Types (APIInEra, AddToBlacklistArgs (..), BuildTxAPI,
TextEnvelopeJSON (..),
TransferProgrammableTokenArgs (..))

-- | Rest API combined with a Raw endpoint
-- for static files
type CombinedAPI =
APIInEra
:<|> Raw

data ServerArgs =
ServerArgs
{ saPort :: !Int
Expand All @@ -49,8 +57,10 @@ defaultServerArgs =
}

runServer :: (Env.HasRuntimeEnv env, Env.HasDirectoryEnv env) => env -> ServerArgs -> IO ()
runServer env ServerArgs{saPort} = do
let app = serve (Proxy @APIInEra) (server env)
runServer env ServerArgs{saPort, saStaticFiles} = do
let app = case saStaticFiles of
Nothing -> serve (Proxy @APIInEra) (server env)
Just fp -> serve (Proxy @CombinedAPI) (server env :<|> serveDirectoryWebApp fp)
port = saPort
Warp.run port app

Expand Down

0 comments on commit a1ccbba

Please sign in to comment.