module Feed.V1.Topic (feedTopicCached) where import Relude hiding (ask) import Api.V1.Cached (request) import Api.V1.Types (Request (IGetTopic), Response (OGetTopic), GetTopic (..), Topic) import Feed.V1.Core import Servant.Client.Streaming import Servant.Server (err500) import Utils (responseToServerError, throwToHandler) feedTopicCached :: GetTopic -> App Topic feedTopicCached req = do result <- request [IGetTopic req] -- TODO: add logging of errors case result of Right [OGetTopic ok] -> pure ok Right _notOk -> throwToHandler err500 Left (FailureResponse _ remoteErr) -> throwToHandler $ responseToServerError remoteErr Left _clientErr -> do throwToHandler err500