summaryrefslogtreecommitdiff
path: root/anomic.hs
blob: 73d45e8caea4d84642b4082394dc5e80df5728a7 (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
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TypeOperators #-}

module Main where

import Rebase.Prelude hiding (Handler)

import Servant
import Network.Wai.Handler.Warp

type API = HelloWorldApi

type HelloWorldApi = "hello" :> Get '[ PlainText] String

type HandlerS state api = ServerT api (ReaderT state (ExceptT ServantErr IO))

type HandlerG api = HandlerS Global api

data Global =
  Global
    {
    }

api :: Proxy API
api = Proxy

webApp :: Global -> Application
webApp global =
  serve api $ hoistServer api (Handler . flip runReaderT global) server

main :: IO ()
main = run 8080 $ webApp Global

helloWorld :: HandlerG HelloWorldApi
helloWorld = return "Hello, World!"

server :: HandlerG API
server = helloWorld