packages feed

kurita-0: app/Relay.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
module Main where

import           Crypto.MAC.SipHash
import           Data.Bits.Extras (w32)
import           Data.Bytes.Put (runPutS)
import           Data.Bytes.Serial
import           Data.Proxy
import           Data.Text (Text)
import           Data.Time
import           Kurita.Server
import qualified Network.Wai.Handler.Warp as Warp

type HLLSZ = 7

main :: IO ()
main = do
  c <- relayCore (Proxy::Proxy HLLSZ) ("127.0.0.1", 8081, "/")::IO (Core Text)
  Warp.run 8080 $ kuritaRelay
      (\_ -> (w32 . (\(SipHash h) -> h) . hash (SipKey 4 7) . runPutS . serialize) <$> getCurrentTime)
      c