packages feed

helics-wai-0.1.0: example.hs

{-# LANGUAGE OverloadedStrings #-}

import System.Environment
import Control.Concurrent

import Network.HTTP.Types
import Network.Wai
import Network.Wai.Handler.Warp
import Network.Helics
import Network.Helics.Wai

import qualified Data.ByteString.Char8 as S8

main :: IO ()
main = do
    key:_ <- getArgs
    withHelics def { licenseKey = S8.pack key, appName = "Test3" } $ do
        _ <- forkIO $ sampler 20
        run 3000 $ helics app

app :: Application
app req send = case pathInfo req of
    []      -> threadDelay (10^(5::Int))     >> send (responseLBS status200 [] "root")
    ["foo"] -> threadDelay (2 * 10^(5::Int)) >> send (responseLBS status200 [] "foo")
    ["bar"] -> datastoreSegment autoScope (DatastoreSegment "bar" "select" "SELECT * FROM bar WHERE key =  'baz'" "select bars" Nothing) (threadDelay (3 * 10^(5::Int)) >> send (responseLBS status200 [] "bar")) (transactionId req)
    _       -> send (responseLBS status404 [] "not found")