From 63bc06a88e3e6827c92a4ea51f4ec447de000dc5 Mon Sep 17 00:00:00 2001 From: Trolli Schmittlauch Date: Tue, 28 Jul 2020 23:45:21 +0200 Subject: [PATCH] implement post fetch (with placeholder content) --- src/Hash2Pub/PostService.hs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Hash2Pub/PostService.hs b/src/Hash2Pub/PostService.hs index 9be7d1b..ef22e29 100644 --- a/src/Hash2Pub/PostService.hs +++ b/src/Hash2Pub/PostService.hs @@ -108,7 +108,10 @@ postServiceApplication serv = serve exposedPostServiceAPI $ postServer serv exposedPostServiceAPI :: Proxy PostServiceAPI exposedPostServiceAPI = Proxy +-- ========= constants =========== +placeholderPost :: Txt.Text +placeholderPost = Txt.take 5120 . Txt.repeat $ 'O' -- size 5KiB -- ========= HTTP API and handlers ============= @@ -175,11 +178,13 @@ subscriptionDelivery serv subList = do enqueueSubscriptions subscriberSTM (normaliseTag tag) sub postList - - - postFetch :: PostService d -> Txt.Text -> Handler Txt.Text -postFetch serv postID = pure $ "Here be a post with dragon ID " <> postID +postFetch serv postID = do + postSet <- liftIO . readTVarIO . ownPosts $ serv + if HSet.member postID postSet + -- decision: always return the same placeholder post + then pure placeholderPost + else throwError $ err404 { errBody = "No post found with this ID" } postMultiFetch :: PostService d -> Txt.Text -> Handler Txt.Text postMultiFetch serv postIDs = pure $ "Here be multiple post dragons: "