mirror of
https://github.com/Start9Labs/registry.git
synced 2026-03-30 11:51:57 +00:00
merge
This commit is contained in:
@@ -28,22 +28,25 @@ module Application
|
|||||||
|
|
||||||
import Startlude
|
import Startlude
|
||||||
|
|
||||||
import Control.Monad.Logger (liftLoc, runLoggingT)
|
import Control.Monad.Logger (liftLoc, runLoggingT)
|
||||||
import Data.Default
|
import Data.Default
|
||||||
import Data.IORef
|
import Data.IORef
|
||||||
import Database.Persist.Sql
|
import Database.Persist.Sql
|
||||||
import Database.Persist.Sqlite (createSqlitePool, runSqlPool, sqlDatabase, sqlPoolSize)
|
import Database.Persist.Sqlite (createSqlitePool, runSqlPool, sqlDatabase, sqlPoolSize)
|
||||||
import Language.Haskell.TH.Syntax (qLocation)
|
import Language.Haskell.TH.Syntax (qLocation)
|
||||||
import Network.Wai
|
import Network.Wai
|
||||||
import Network.Wai.Handler.Warp (Settings, defaultSettings, defaultShouldDisplayException,
|
import Network.Wai.Handler.Warp (Settings, defaultSettings, defaultShouldDisplayException,
|
||||||
getPort, setHost, setOnException, setPort)
|
getPort, setHost, setOnException, setPort)
|
||||||
import Network.Wai.Handler.WarpTLS
|
import Network.Wai.Handler.WarpTLS
|
||||||
import Network.Wai.Middleware.Cors (CorsResourcePolicy (..), cors, simpleCorsResourcePolicy)
|
import Network.Wai.Middleware.AcceptOverride
|
||||||
import Network.Wai.Middleware.RequestLogger (Destination (Logger), IPAddrSource (..), OutputFormat (..),
|
import Network.Wai.Middleware.Autohead
|
||||||
destination, mkRequestLogger, outputFormat)
|
import Network.Wai.Middleware.Cors (CorsResourcePolicy (..), cors, simpleCorsResourcePolicy)
|
||||||
import System.Log.FastLogger (defaultBufSize, newStdoutLoggerSet, toLogStr)
|
import Network.Wai.Middleware.MethodOverride
|
||||||
|
import Network.Wai.Middleware.RequestLogger (Destination (Logger), IPAddrSource (..), OutputFormat (..),
|
||||||
|
destination, mkRequestLogger, outputFormat)
|
||||||
|
import System.Log.FastLogger (defaultBufSize, newStdoutLoggerSet, toLogStr)
|
||||||
import Yesod.Core
|
import Yesod.Core
|
||||||
import Yesod.Core.Types hiding (Logger)
|
import Yesod.Core.Types hiding (Logger)
|
||||||
import Yesod.Default.Config2
|
import Yesod.Default.Config2
|
||||||
import Yesod.Persist.Core
|
import Yesod.Persist.Core
|
||||||
|
|
||||||
@@ -109,7 +112,7 @@ makeApplication foundation = do
|
|||||||
let authWare = makeAuthWare foundation
|
let authWare = makeAuthWare foundation
|
||||||
-- Create the WAI application and apply middlewares
|
-- Create the WAI application and apply middlewares
|
||||||
appPlain <- toWaiAppPlain foundation
|
appPlain <- toWaiAppPlain foundation
|
||||||
pure . logWare . cors (const . Just $ policy) . authWare . defaultMiddlewaresNoLogging $ appPlain
|
pure . logWare . cors (const . Just $ policy) . authWare . acceptOverride . autohead . methodOverride $ appPlain
|
||||||
where
|
where
|
||||||
policy = simpleCorsResourcePolicy { corsMethods = ["GET", "HEAD", "OPTIONS", "POST", "PATCH", "PUT", "DELETE"], corsRequestHeaders = ["app-version", "Content-Type", "Authorization"] }
|
policy = simpleCorsResourcePolicy { corsMethods = ["GET", "HEAD", "OPTIONS", "POST", "PATCH", "PUT", "DELETE"], corsRequestHeaders = ["app-version", "Content-Type", "Authorization"] }
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import Lib.Registry
|
|||||||
import Lib.Semver
|
import Lib.Semver
|
||||||
import Lib.Types.Semver
|
import Lib.Types.Semver
|
||||||
import System.FilePath ((<.>))
|
import System.FilePath ((<.>))
|
||||||
|
import System.Posix.Files (fileSize, getFileStatus)
|
||||||
|
|
||||||
pureLog :: Show a => a -> Handler a
|
pureLog :: Show a => a -> Handler a
|
||||||
pureLog = liftA2 (*>) ($logInfo . show) pure
|
pureLog = liftA2 (*>) ($logInfo . show) pure
|
||||||
@@ -55,7 +56,10 @@ getApp rootDir ext = do
|
|||||||
Just (RegisteredAppVersion (_, filePath)) -> do
|
Just (RegisteredAppVersion (_, filePath)) -> do
|
||||||
exists <- liftIO $ doesFileExist filePath
|
exists <- liftIO $ doesFileExist filePath
|
||||||
if exists
|
if exists
|
||||||
then respondSource typePlain $ CB.sourceFile filePath .| awaitForever sendChunkBS
|
then do
|
||||||
|
sz <- liftIO $ fileSize <$> getFileStatus filePath
|
||||||
|
addHeader "Content-Length" (show sz)
|
||||||
|
respondSource typePlain $ CB.sourceFile filePath .| awaitForever sendChunkBS
|
||||||
else notFound
|
else notFound
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user