{-# LANGUAGE OverloadedStrings #-} module Database.Redis.Builder ( fromReply, ) where import Blaze.ByteString.Builder import Blaze.Text import qualified Data.ByteString as S import Data.Monoid import Database.Redis.Types fromReply :: Reply -> Builder fromReply rep = case rep of StatusReply stat -> fromByteString "+" <> fromByteString stat <> crlf ErrorReply err -> fromByteString "-" <> fromByteString err <> crlf IntReply n -> fromByteString ":" <> integral n <> crlf BulkReply mb -> fromBulkReply mb MultiBulkReply Nothing -> fromByteString "*-1" <> crlf MultiBulkReply (Just bss) -> fromByteString "*" <> integral (length bss) <> crlf <> mconcat (map fromBulkReply bss) {-# INLINE fromReply #-} fromBulkReply :: Maybe S.ByteString -> Builder fromBulkReply Nothing = fromByteString "$-1" <> crlf fromBulkReply (Just bs) = fromByteString "$" <> integral (S.length bs) <> crlf <> fromByteString bs <> crlf {-# INLINE fromBulkReply #-} crlf :: Builder crlf = fromByteString "\r\n" {-# INLINE crlf #-}