packages feed

ribosome-host-0.9.9.9: lib/Ribosome/Host/Data/Response.hs

module Ribosome.Host.Data.Response where

import Data.MessagePack (Object)
import Exon (exon)

import Ribosome.Host.Data.Request (RequestId (RequestId))

data Response =
  Success Object
  |
  Error Text
  deriving stock (Eq, Show)

formatResponse :: Response -> Text
formatResponse = \case
  Success o -> show o
  Error e -> [exon|error: #{e}|]

data TrackedResponse =
  TrackedResponse {
    id :: RequestId,
    payload :: Response
  }
  deriving stock (Eq, Show)

formatTrackedResponse :: TrackedResponse -> Text
formatTrackedResponse (TrackedResponse (RequestId i) payload) =
  [exon|<#{show i}> #{formatResponse payload}|]