4r/4r-feed/Feed/V1/Topic.hs

23 lines
709 B
Haskell

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