{-| Module : Network.Nakadi.EventTypes.Partitions Description : Implementation of Nakadi Partitions API Copyright : (c) Moritz Clasmeier 2017, 2018 License : BSD3 Maintainer : mtesseract@silverratio.net Stability : experimental Portability : POSIX This module implements the @\/event-types\/EVENT-TYPE\/partitions@ API. -} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE MultiParamTypeClasses #-} module Network.Nakadi.EventTypes.Partitions ( eventTypePartitions , eventTypePartition ) where import Network.Nakadi.Internal.Http import Network.Nakadi.Internal.Prelude path :: EventTypeName -> Maybe PartitionName -> ByteString path eventTypeName maybePartitionName = "/event-types/" <> encodeUtf8 (unEventTypeName eventTypeName) <> "/partitions" <> (case maybePartitionName of Just partitionName -> "/" <> encodeUtf8 (unPartitionName partitionName) Nothing -> "") -- | @GET@ to @\/event-types\/EVENT-TYPE\/partitions@. Retrieves -- information about all partitions. eventTypePartitions :: MonadNakadi b m => EventTypeName -- ^ Name of Event Type -> m [Partition] -- ^ Partition Information eventTypePartitions eventTypeName = do config <- nakadiAsk httpJsonBody ok200 [(status404, errorEventTypeNotFound)] $ (includeFlowId config . setRequestPath (path eventTypeName Nothing)) -- | @GET@ to @\/event-types\/EVENT-TYPE\/partitions\/PARTITION@. -- Retrieves information about a single partition. eventTypePartition :: MonadNakadi b m => EventTypeName -- ^ Name of Event Type -> PartitionName -- ^ Name of Partition to look up -> m Partition -- ^ Partition Information eventTypePartition eventTypeName partitionName = do config <- nakadiAsk httpJsonBody ok200 [] $ (includeFlowId config . setRequestPath (path eventTypeName (Just partitionName)))