Program compiles but without auth, uri parsing, or json error reporting

This commit is contained in:
Joe Nelson
2014-12-06 17:42:19 -08:00
parent ae9fe506be
commit dcbecf085f
2 changed files with 87 additions and 91 deletions
+28 -21
View File
@@ -3,17 +3,16 @@ module Main where
import Paths_dbapi (version)
import App
import Middleware (inTransaction, authenticated, withSavepoint, clientErrors,
redirectInsecure, withDBConnection, Environment(..))
--import Auth
import Middleware
import Control.Monad (unless)
import Control.Exception(bracket)
import Data.String.Conversions (cs)
import Network.Wai
import Network.Wai.Middleware.Cors (cors)
import Network.Wai.Handler.Warp hiding (Connection)
import Network.Wai.Middleware.Gzip (gzip, def)
import Network.Wai.Middleware.Static (staticPolicy, only)
import Data.Pool(createPool, destroyAllResources)
import Data.List (intercalate)
import Data.Version (versionBranch)
import qualified Hasql as H
@@ -25,26 +24,34 @@ import Config (AppConfig(..), argParser, corsPolicy)
main :: IO ()
main = do
conf <- execParser (info (helper <*> argParser) describe)
bracket
(createPool (connectPostgreSQL $ cs (configDbUri conf))
close 1 600 (configPool conf))
destroyAllResources
(\pool -> do
let port = configPort conf
let port = configPort conf
unless (configSecure conf) $
putStrLn "WARNING, running in insecure mode, auth will be in plaintext"
unless (configSecure conf) $
putStrLn "WARNING, running in insecure mode, auth will be in plaintext"
Prelude.putStrLn $ "Listening on port " ++ (show $ configPort conf :: String)
let settings = setPort port
. setServerName (cs $ "dbapi/" <> prettyVersion)
$ defaultSettings
runSettings settings $ (if configSecure conf then redirectInsecure else id)
Prelude.putStrLn $ "Listening on port " ++ (show $ configPort conf :: String)
let pgSettings = H.Postgres "localhost" 5432 "postgres" "" "postgres"
sessSettings <- maybe (fail "Improper session settings") return $
H.sessionSettings 6 30
let settings = setPort port
. setServerName (cs $ "dbapi/" <> prettyVersion)
$ defaultSettings
middle =
(if configSecure conf then redirectInsecure else id)
. gzip def . cors corsPolicy . clientErrors
. staticPolicy (only [("favicon.ico", "static/favicon.ico")])
. withDBConnection pool . inTransaction Production
. authenticated (cs $ configAnonRole conf) . Middleware.withSavepoint Production $ app
)
. staticPolicy (only [("favicon.ico", "static/favicon.ico")]) in
runSettings settings $ middle (runApp pgSettings sessSettings)
-- . authenticated (cs $ configAnonRole conf) $ app
where
describe = progDesc "create a REST API to an existing Postgres database"
prettyVersion = intercalate "." $ map show $ versionBranch version
runApp :: H.Postgres -> H.SessionSettings -> Application
runApp pg sess req respond =
respond =<< H.session pg sess (app req)