Skip to main content

burn_central_client/model/
mod.rs

1pub mod response;
2
3use crate::{
4    Client, ClientError,
5    model::response::{ModelDownloadResponse, ModelResponse, ModelVersionResponse},
6};
7
8impl Client {
9    /// Get details about a specific model.
10    ///
11    /// The client must be logged in before calling this method.
12    pub fn get_model(
13        &self,
14        namespace: &str,
15        project_name: &str,
16        model_name: &str,
17    ) -> Result<ModelResponse, ClientError> {
18        let url = self.join(&format!(
19            "projects/{namespace}/{project_name}/models/{model_name}"
20        ));
21
22        self.get_json::<ModelResponse>(url)
23    }
24
25    /// Get details about a specific model version.
26    ///
27    /// The client must be logged in before calling this method.
28    pub fn get_model_version(
29        &self,
30        namespace: &str,
31        project_name: &str,
32        model_name: &str,
33        version: u32,
34    ) -> Result<ModelVersionResponse, ClientError> {
35        let url = self.join(&format!(
36            "projects/{namespace}/{project_name}/models/{model_name}/versions/{version}"
37        ));
38
39        self.get_json::<ModelVersionResponse>(url)
40    }
41
42    /// Generate presigned URLs for downloading model version files.
43    ///
44    /// The client must be logged in before calling this method.
45    pub fn presign_model_download(
46        &self,
47        namespace: &str,
48        project_name: &str,
49        model_name: &str,
50        version: u32,
51    ) -> Result<ModelDownloadResponse, ClientError> {
52        let url = self.join(&format!(
53            "projects/{namespace}/{project_name}/models/{model_name}/versions/{version}/download"
54        ));
55
56        self.get_json::<ModelDownloadResponse>(url)
57    }
58}