23 lines
709 B
Haskell
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
|