Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
    • Help
    • Submit feedback
    • Contribute to GitLab
  • Sign in
haskell-gargantext
haskell-gargantext
  • Project
    • Project
    • Details
    • Activity
    • Releases
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 175
    • Issues 175
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 9
    • Merge Requests 9
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • gargantext
  • haskell-gargantexthaskell-gargantext
  • Issues
  • #234

Closed
Open
Opened Jun 27, 2023 by Przemyslaw Kaminski@cgenie
  • Report abuse
  • New issue
Report abuse New issue

How to extract common Servant.Client parameters?

import Protolude
import Servant.API
import Servant.Client

import OpenAlex.Types

type API_URL = Text
apiUrl :: API_URL

apiUrl = "api.openalex.org"

type PageParams =
     QueryParam "page" Page
  :> QueryParam "per-page" PerPage
  :> QueryParam "cursor" Cursor

type OpenAlexAPI =
  -- https://api.openalex.org/concepts
  "concepts"
  -- :> QueryParam "page" Page
  -- :> QueryParam "per-page" PerPage
  -- :> QueryParam "cursor" Cursor
  :> PageParams
  -- TODO: filter, search, sort
  :> Get '[JSON] (ListOf Concept)

openAlexApi :: Proxy OpenAlexAPI
openAlexApi = Proxy

--concepts :: Maybe Page -> Maybe PerPage -> Maybe Cursor -> ClientM (ListOf Concept)
concepts :: _ -> ClientM (ListOf Concept)

concepts {- :<|> fetch -} = client openAlexApi

@AlfredoDiNapoli could you check if the PageParams can be factored out?

Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
0
Labels
None
Assign labels
  • View project labels
Reference: gargantext/haskell-gargantext#234