import Network.Wai.Middleware.Gzip (GzipFiles (GzipCompress)) import qualified Network.Wai.Middleware.Gzip as W import Network.Wai.Middleware.Static import qualified Web.Scotty as S import qualified Conf import qualified Controller.Category as Category import qualified Controller.Income as Income import qualified Controller.Index as Index import qualified Controller.Payment as Payment import Job.Daemon (runDaemons) main :: IO () main = do conf <- Conf.get "application.conf" _ <- runDaemons conf S.scotty (Conf.port conf) $ do S.middleware $ W.gzip $ W.def { W.gzipFiles = GzipCompress } S.middleware . staticPolicy $ noDots >-> addBase "public" S.get "/" $ do Index.get conf S.post "/askSignIn" $ do S.jsonData >>= Index.askSignIn conf S.get "/signIn/:signInToken" $ do signInToken <- S.param "signInToken" Index.trySignIn conf signInToken S.post "/signOut" $ Index.signOut conf S.post "/payment" $ S.jsonData >>= Payment.create S.put "/payment" $ S.jsonData >>= Payment.edit S.delete "/payment/:id" $ do paymentId <- S.param "id" Payment.delete paymentId S.post "/income" $ S.jsonData >>= Income.create S.put "/income" $ S.jsonData >>= Income.edit S.delete "/income/:id" $ do incomeId <- S.param "id" Income.delete incomeId S.post "/category" $ S.jsonData >>= Category.create S.put "/category" $ S.jsonData >>= Category.edit S.delete "/category/:id" $ do categoryId <- S.param "id" Category.delete categoryId