natskell-0.3.0.0: jetstream/JetStream/Protocol/Subject.hs
{-# LANGUAGE OverloadedStrings #-}
module JetStream.Protocol.Subject
( apiPrefix
, apiSubject
, accountInfoSubject
, streamCreateSubject
, streamUpdateSubject
, streamInfoSubject
, streamDeleteSubject
, streamMessageGetSubject
, streamMessageDeleteSubject
, streamPurgeSubject
, streamListSubject
, streamNamesSubject
, consumerCreateSubject
, consumerCreateNamedSubject
, durableConsumerCreateSubject
, consumerInfoSubject
, consumerDeleteSubject
, consumerPauseSubject
, consumerResetSubject
, consumerListSubject
, consumerNamesSubject
, consumerNextSubject
) where
import qualified Data.ByteString as BS
import JetStream.Options (JetStreamContext (..))
import JetStream.Types (ConsumerName, StreamName, Subject)
apiPrefix :: JetStreamContext -> Subject
apiPrefix ctx =
case contextDomain ctx of
Nothing -> "$JS.API"
Just domain -> BS.concat ["$JS.", domain, ".API"]
apiSubject :: JetStreamContext -> [BS.ByteString] -> Subject
apiSubject ctx segments =
BS.intercalate "." (apiPrefix ctx : segments)
accountInfoSubject :: JetStreamContext -> Subject
accountInfoSubject ctx =
apiSubject ctx ["INFO"]
streamCreateSubject :: JetStreamContext -> StreamName -> Subject
streamCreateSubject ctx stream =
apiSubject ctx ["STREAM", "CREATE", stream]
streamUpdateSubject :: JetStreamContext -> StreamName -> Subject
streamUpdateSubject ctx stream =
apiSubject ctx ["STREAM", "UPDATE", stream]
streamInfoSubject :: JetStreamContext -> StreamName -> Subject
streamInfoSubject ctx stream =
apiSubject ctx ["STREAM", "INFO", stream]
streamDeleteSubject :: JetStreamContext -> StreamName -> Subject
streamDeleteSubject ctx stream =
apiSubject ctx ["STREAM", "DELETE", stream]
streamMessageGetSubject :: JetStreamContext -> StreamName -> Subject
streamMessageGetSubject ctx stream =
apiSubject ctx ["STREAM", "MSG", "GET", stream]
streamMessageDeleteSubject :: JetStreamContext -> StreamName -> Subject
streamMessageDeleteSubject ctx stream =
apiSubject ctx ["STREAM", "MSG", "DELETE", stream]
streamPurgeSubject :: JetStreamContext -> StreamName -> Subject
streamPurgeSubject ctx stream =
apiSubject ctx ["STREAM", "PURGE", stream]
streamListSubject :: JetStreamContext -> Subject
streamListSubject ctx =
apiSubject ctx ["STREAM", "LIST"]
streamNamesSubject :: JetStreamContext -> Subject
streamNamesSubject ctx =
apiSubject ctx ["STREAM", "NAMES"]
consumerCreateSubject :: JetStreamContext -> StreamName -> Subject
consumerCreateSubject ctx stream =
apiSubject ctx ["CONSUMER", "CREATE", stream]
consumerCreateNamedSubject :: JetStreamContext -> StreamName -> ConsumerName -> Subject
consumerCreateNamedSubject ctx stream consumer =
apiSubject ctx ["CONSUMER", "CREATE", stream, consumer]
durableConsumerCreateSubject :: JetStreamContext -> StreamName -> ConsumerName -> Subject
durableConsumerCreateSubject ctx stream consumer =
apiSubject ctx ["CONSUMER", "DURABLE", "CREATE", stream, consumer]
consumerInfoSubject :: JetStreamContext -> StreamName -> ConsumerName -> Subject
consumerInfoSubject ctx stream consumer =
apiSubject ctx ["CONSUMER", "INFO", stream, consumer]
consumerDeleteSubject :: JetStreamContext -> StreamName -> ConsumerName -> Subject
consumerDeleteSubject ctx stream consumer =
apiSubject ctx ["CONSUMER", "DELETE", stream, consumer]
consumerPauseSubject :: JetStreamContext -> StreamName -> ConsumerName -> Subject
consumerPauseSubject ctx stream consumer =
apiSubject ctx ["CONSUMER", "PAUSE", stream, consumer]
consumerResetSubject :: JetStreamContext -> StreamName -> ConsumerName -> Subject
consumerResetSubject ctx stream consumer =
apiSubject ctx ["CONSUMER", "RESET", stream, consumer]
consumerListSubject :: JetStreamContext -> StreamName -> Subject
consumerListSubject ctx stream =
apiSubject ctx ["CONSUMER", "LIST", stream]
consumerNamesSubject :: JetStreamContext -> StreamName -> Subject
consumerNamesSubject ctx stream =
apiSubject ctx ["CONSUMER", "NAMES", stream]
consumerNextSubject :: JetStreamContext -> StreamName -> ConsumerName -> Subject
consumerNextSubject ctx stream consumer =
apiSubject ctx ["CONSUMER", "MSG", "NEXT", stream, consumer]