Get DataClient to build without issues

This commit is contained in:
towards-a-new-leftypol 2024-03-22 21:43:24 -04:00
parent ad6300fa6b
commit ff3667516a
4 changed files with 27 additions and 11 deletions

@ -1 +1 @@
Subproject commit 62a23581e786f8564653406845c4b2a07d73deb6 Subproject commit b868e4614f3fb56517e65b6965fc011f9190e70d

View File

@ -1,16 +1,23 @@
module DataClient module DataClient
( fetchLatest ( fetchLatest
) )
where where
import Common.Network.ClientTypes (Model (..)) import Data.Time.Clock (UTCTime)
import qualified Data.ByteString.Lazy as LBS
import qualified Data.ByteString.Lazy.Char8 as LC8
import Common.Network.CatalogPostType (CatalogPost)
import Common.Network.ClientTypes (Model (..), FetchCatalogArgs (..))
import Common.Network.HttpClient import Common.Network.HttpClient
( post ( post
, HttpError , HttpError (..)
) )
import Data.Aeson (eitherDecode, encode, FromJSON)
import Common.Server.JSONSettings (JSONSettings)
fetchLatest :: Model -> UTCTime -> IO IO (Either HttpError [ CatalogPost ]) fetchLatest :: JSONSettings -> Model -> UTCTime -> IO (Either HttpError [ CatalogPost ])
fetchLatest m t iface = do fetchLatest settings m t = do
post settings "/rpc/fetch_catalog" payload False >>= return . eitherDecodeResponse post settings "/rpc/fetch_catalog" payload False >>= return . eitherDecodeResponse
where where
@ -18,3 +25,11 @@ fetchLatest m t iface = do
{ max_time = t { max_time = t
, max_row_read = fetchCount m , max_row_read = fetchCount m
} }
eitherDecodeResponse :: (FromJSON a) => Either HttpError LBS.ByteString -> Either HttpError a
eitherDecodeResponse (Left err) = Left err
eitherDecodeResponse (Right bs) =
case eitherDecode bs of
Right val -> Right val
Left err -> Left $ StatusCodeError 500 $ LC8.pack $ "Failed to decode JSON: " ++ err ++ " " ++ (show bs)

View File

@ -12,7 +12,7 @@ import qualified Network.Wai.Middleware.RequestLogger as Wai
import Servant.API import Servant.API
import Servant.Server (Server, Handler (..), serve) import Servant.Server (Server, Handler (..), serve)
import qualified Lucid as L import qualified Lucid as L
import qualified Lucid.Base as L -- import qualified Lucid.Base as L
import qualified Common.FrontEnd.Routes as FE import qualified Common.FrontEnd.Routes as FE

View File

@ -84,6 +84,7 @@ executable chandlr-server
Common.Network.SiteType Common.Network.SiteType
Common.Network.ThreadType Common.Network.ThreadType
Common.Network.Units Common.Network.Units
Common.Network.HttpClient
Common.Parsing.EmbedParser Common.Parsing.EmbedParser
Common.Parsing.PostBodyUtils Common.Parsing.PostBodyUtils
Common.Parsing.PostPartType Common.Parsing.PostPartType