Skip to main content

mesa_dev/client/
lfs.rs

1use crate::low_level::apis::{lfs_api, Error};
2use crate::models;
3
4use super::RepoClient;
5
6/// Client for LFS operations (`/{org}/{repo}/lfs`).
7#[derive(Clone, Debug)]
8pub struct LfsClient<'a> {
9    pub(super) repo: &'a RepoClient<'a>,
10}
11
12impl LfsClient<'_> {
13    /// Request pre-signed URLs to upload large files to LFS storage.
14    ///
15    /// # Errors
16    ///
17    /// Returns an error if the API request fails.
18    #[tracing::instrument(skip(self, request), fields(org = self.repo.org.org, repo = self.repo.repo), err(Debug))]
19    pub async fn upload(
20        &self,
21        request: models::PostByOrgByRepoLfsObjectsRequest,
22    ) -> Result<
23        models::PostByOrgByRepoLfsObjects200Response,
24        Error<lfs_api::PostByOrgByRepoLfsObjectsError>,
25    > {
26        lfs_api::post_by_org_by_repo_lfs_objects(
27            self.repo.org.config,
28            self.repo.org.org,
29            self.repo.repo,
30            Some(request),
31        )
32        .await
33    }
34
35    /// Request pre-signed URLs to download large files from LFS storage.
36    ///
37    /// # Errors
38    ///
39    /// Returns an error if the API request fails.
40    #[tracing::instrument(skip(self, request), fields(org = self.repo.org.org, repo = self.repo.repo), err(Debug))]
41    pub async fn download(
42        &self,
43        request: models::PostByOrgByRepoLfsObjectsDownloadRequest,
44    ) -> Result<
45        models::PostByOrgByRepoLfsObjects200Response,
46        Error<lfs_api::PostByOrgByRepoLfsObjectsDownloadError>,
47    > {
48        lfs_api::post_by_org_by_repo_lfs_objects_download(
49            self.repo.org.config,
50            self.repo.org.org,
51            self.repo.repo,
52            Some(request),
53        )
54        .await
55    }
56}