hugging_face_client/client/
arxiv.rs

1use crate::{
2  api::{ArxivDailyRes, ArxivPaperReq, ArxivPaperRes, ArxivReposReq, ArxivReposRes},
3  client::Client,
4  errors::Result,
5};
6
7impl Client {
8  /// Get the API equivalent of the Paper page, i.e., metadata like authors, summary, and discussion
9  /// comments
10  ///
11  /// Endpoint: ` GET /api/papers/{arxiv_id}`
12  pub async fn arxiv_paper(&self, req: ArxivPaperReq<'_>) -> Result<ArxivPaperRes> {
13    let url = format!("{}/api/papers/{}", &self.api_endpoint, req.paper_id);
14    self.get_request(&url, self.empty_req(), false).await
15  }
16
17  /// Get all the models, datasets, and Spaces that refer to a paper
18  ///
19  /// Endpoint: ` GET /api/arxiv/{arxiv_id}/repos`
20  pub async fn arxiv_repos(&self, req: ArxivReposReq<'_>) -> Result<ArxivReposRes> {
21    let url = format!("{}/api/arxiv/{}/repos", &self.api_endpoint, req.paper_id);
22    self.get_request(&url, self.empty_req(), true).await
23  }
24
25  /// Get the daily papers curated by AK and the community
26  ///
27  /// Endpoint: `GET /api/daily_papers`
28  ///
29  /// TODO: support filter on date
30  pub async fn arxiv_daily(&self) -> Result<ArxivDailyRes> {
31    let url = format!("{}/api/daily_papers", &self.api_endpoint);
32    self.get_request(&url, self.empty_req(), false).await
33  }
34}