aboutsummaryrefslogtreecommitdiff
path: root/server/src/Main.hs
blob: e3dad9e4d48eaa66ca6a4d5426726d02c3554bff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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.post "/api/askSignIn" $
      S.jsonData >>= Index.askSignIn conf

    S.get "/api/signIn/:signInToken" $ do
      signInToken <- S.param "signInToken"
      Index.trySignIn conf signInToken

    S.post "/api/signOut" $
      Index.signOut conf

    S.post "/api/payment" $
      S.jsonData >>= Payment.create

    S.put "/api/payment" $
      S.jsonData >>= Payment.edit

    S.delete "/api/payment/:id" $ do
      paymentId <- S.param "id"
      Payment.delete paymentId

    S.post "/api/income" $
      S.jsonData >>= Income.create

    S.put "/api/income" $
      S.jsonData >>= Income.edit

    S.delete "/api/income/:id" $ do
      incomeId <- S.param "id"
      Income.delete incomeId

    S.post "/api/category" $
      S.jsonData >>= Category.create

    S.put "/api/category" $
      S.jsonData >>= Category.edit

    S.delete "/api/category/:id" $ do
      categoryId <- S.param "id"
      Category.delete categoryId

    S.notFound $
      Index.get conf