{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE TypeApplications #-} module Test.API.Routes where import Fmt (Builder, (+|), (|+)) import Gargantext.API.Admin.Auth.Types (AuthRequest, AuthResponse) import Gargantext.API.Ngrams.Types ( NgramsTable, NgramsTablePatch, OrderBy, TabType, Versioned, VersionedWithCount ) import Gargantext.API.Routes.Named import Gargantext.Core.Types.Main (ListType) import Gargantext.Core.Types.Query (Limit, MaxSize, MinSize, Offset) import Gargantext.Prelude import Network.Wai.Handler.Warp (Port) import Servant.Client (ClientM) import Servant.Client.Generic ( genericClient, AsClientT ) import Gargantext.API.Routes.Named.Table import Gargantext.Core.Types (ListId) -- This is for requests made by http.client directly to hand-crafted URLs curApi :: Builder curApi = "v1.0" mkUrl :: Port -> Builder -> ByteString mkUrl _port urlPiece = "/api/" +| curApi |+ urlPiece -- This is for Servant.Client requests auth_api :: AuthRequest -> ClientM AuthResponse auth_api = authEp cliRoutes where cliRoutes :: AuthAPI (AsClientT ClientM) cliRoutes = genericClient @AuthAPI table_ngrams_get_api :: TabType -> ListId -> Limit -> Maybe Offset -> Maybe ListType -> Maybe MinSize -> Maybe MaxSize -> Maybe OrderBy -> Maybe Text -> ClientM (VersionedWithCount NgramsTable) table_ngrams_get_api = getNgramsTableEp cliRoutes where cliRoutes :: TableNgramsApiGet (AsClientT ClientM) cliRoutes = genericClient @(TableNgramsApiGet) table_ngrams_put_api :: TabType -> ListId -> Versioned NgramsTablePatch -> ClientM (Versioned NgramsTablePatch) table_ngrams_put_api = putNgramsTableEp cliRoutes where cliRoutes :: TableNgramsApiPut (AsClientT ClientM) cliRoutes = genericClient @TableNgramsApiPut