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    pub async fn upload(
19        &self,
20        request: models::PostByOrgByRepoLfsObjectsRequest,
21    ) -> Result<
22        models::PostByOrgByRepoLfsObjects200Response,
23        Error<lfs_api::PostByOrgByRepoLfsObjectsError>,
24    > {
25        lfs_api::post_by_org_by_repo_lfs_objects(
26            self.repo.org.config,
27            self.repo.org.org,
28            self.repo.repo,
29            Some(request),
30        )
31        .await
32    }
33
34    /// Request pre-signed URLs to download large files from LFS storage.
35    ///
36    /// # Errors
37    ///
38    /// Returns an error if the API request fails.
39    pub async fn download(
40        &self,
41        request: models::PostByOrgByRepoLfsObjectsRequest,
42    ) -> Result<
43        models::PostByOrgByRepoLfsObjects200Response,
44        Error<lfs_api::PostByOrgByRepoLfsObjectsDownloadError>,
45    > {
46        lfs_api::post_by_org_by_repo_lfs_objects_download(
47            self.repo.org.config,
48            self.repo.org.org,
49            self.repo.repo,
50            Some(request),
51        )
52        .await
53    }
54}