packages feed

hw-kafka-avro-6.1.2: example/Main.hs

{-# LANGUAGE OverloadedStrings   #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Main where

import           Control.Monad.Trans.Except
import qualified Data.Aeson                 as J
import           Data.Monoid

import Data.Int
import Data.Text
import Kafka.Avro
import Message

exampleMessage = TestMessage 1 "Example" True 12345678

data AppError = EncError EncodeError | DecError DecodeError
  deriving (Show)

main :: IO ()
main = do
  sr   <- schemaRegistry "http://localhost:8081"
  res  <- runExceptT $ roundtrip sr
  print res

roundtrip :: SchemaRegistry -> ExceptT AppError IO TestMessage
roundtrip sr = do
  enc <- withExceptT EncError (encode' exampleMessage)
  dec <- withExceptT DecError (decode' enc)
  return dec
  where
    encode' msg = ExceptT $ encode sr (Subject "example-subject") exampleMessage
    decode' msg = ExceptT $ decode sr msg