freddy 0.1.0.0 → 0.1.1.0
raw patch · 4 files changed
+77/−2 lines, 4 files
Files
- freddy.cabal +6/−2
- src/Network/Freddy/CorrelationIdGenerator.hs +16/−0
- src/Network/Freddy/Request.hs +39/−0
- src/Network/Freddy/ResultType.hs +16/−0
freddy.cabal view
@@ -1,5 +1,5 @@ name: freddy-version: 0.1.0.0+version: 0.1.1.0 homepage: https://github.com/salemove/freddy-hs license: MIT license-file: LICENSE@@ -12,7 +12,11 @@ synopsis: RabbitMQ Messaging API supporting request-response library- exposed-modules: Network.Freddy+ exposed-modules:+ Network.Freddy,+ Network.Freddy.CorrelationIdGenerator,+ Network.Freddy.Request,+ Network.Freddy.ResultType build-depends: base >= 4.8 && < 5, bytestring >= 0.9,
+ src/Network/Freddy/CorrelationIdGenerator.hs view
@@ -0,0 +1,16 @@+module Network.Freddy.CorrelationIdGenerator (CorrelationId, generateCorrelationId) where++import System.Random (randomIO)+import qualified Data.UUID as UUID+import Data.UUID (UUID)+import Data.Text (Text)++type CorrelationId = Text++generateCorrelationId :: IO CorrelationId+generateCorrelationId = do+ uuid <- newUUID+ return $ UUID.toText uuid++newUUID :: IO UUID+newUUID = randomIO
+ src/Network/Freddy/Request.hs view
@@ -0,0 +1,39 @@+{-# LANGUAGE OverloadedStrings #-}+module Network.Freddy.Request (+ Request (..),+ timeoutInMicroseconds,+ expirationInMs,+ newReq+) where++import Data.Text (Text, pack)+import Data.Default (Default, def)+import Data.ByteString.Lazy.Char8 (ByteString)+import qualified Data.ByteString.Lazy.Char8 as BS++data Request = Request {+ queueName :: Text,+ body :: ByteString,+ timeoutInMs :: Int,+ deleteOnTimeout :: Bool+} deriving (Show)++instance Default Request where+ def = Request {+ queueName = "localhost",+ body = BS.empty,+ timeoutInMs = 3000,+ deleteOnTimeout = True+ }++timeoutInMicroseconds :: Request -> Int+timeoutInMicroseconds = (*) 1000 . timeoutInMs++expirationInMs :: Request -> Maybe Text+expirationInMs request =+ if deleteOnTimeout request+ then Just . pack . show . timeoutInMs $ request+ else Nothing++newReq :: Request+newReq = def
+ src/Network/Freddy/ResultType.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE OverloadedStrings #-}+module Network.Freddy.ResultType (ResultType (..), serializeResultType, fromText) where++import Data.Text (Text, pack)++data ResultType = Success | Error deriving (Eq)++serializeResultType :: ResultType -> Text+serializeResultType resType = case resType of+ Success -> pack "success"+ Error -> pack "error"++fromText :: Text -> ResultType+fromText text = case text of+ "success" -> Success+ _ -> Error