bitwarden_sm/
client_projects.rs

1use bitwarden_core::Client;
2
3use crate::{
4    error::SecretsManagerError,
5    projects::{
6        create_project, delete_projects, get_project, list_projects, update_project,
7        ProjectCreateRequest, ProjectGetRequest, ProjectPutRequest, ProjectResponse,
8        ProjectsDeleteRequest, ProjectsDeleteResponse, ProjectsListRequest, ProjectsResponse,
9    },
10};
11
12/// Aliases to maintain backward compatibility
13pub type ClientProjects = ProjectsClient;
14
15#[allow(missing_docs)]
16pub struct ProjectsClient {
17    pub client: Client,
18}
19
20impl ProjectsClient {
21    #[allow(missing_docs)]
22    pub fn new(client: Client) -> Self {
23        Self { client }
24    }
25
26    #[allow(missing_docs)]
27    pub async fn get(
28        &self,
29        input: &ProjectGetRequest,
30    ) -> Result<ProjectResponse, SecretsManagerError> {
31        get_project(&self.client, input).await
32    }
33
34    #[allow(missing_docs)]
35    pub async fn create(
36        &self,
37        input: &ProjectCreateRequest,
38    ) -> Result<ProjectResponse, SecretsManagerError> {
39        create_project(&self.client, input).await
40    }
41
42    #[allow(missing_docs)]
43    pub async fn list(
44        &self,
45        input: &ProjectsListRequest,
46    ) -> Result<ProjectsResponse, SecretsManagerError> {
47        list_projects(&self.client, input).await
48    }
49
50    #[allow(missing_docs)]
51    pub async fn update(
52        &self,
53        input: &ProjectPutRequest,
54    ) -> Result<ProjectResponse, SecretsManagerError> {
55        update_project(&self.client, input).await
56    }
57
58    #[allow(missing_docs)]
59    pub async fn delete(
60        &self,
61        input: ProjectsDeleteRequest,
62    ) -> Result<ProjectsDeleteResponse, SecretsManagerError> {
63        delete_projects(&self.client, input).await
64    }
65}
66
67/// This trait is for backward compatibility
68pub trait ClientProjectsExt {
69    #[allow(missing_docs)]
70    fn projects(&self) -> ClientProjects;
71}
72
73impl ClientProjectsExt for Client {
74    fn projects(&self) -> ClientProjects {
75        ProjectsClient::new(self.clone())
76    }
77}
78
79#[allow(missing_docs)]
80pub trait ProjectsClientExt {
81    #[allow(missing_docs)]
82    fn projects(&self) -> ProjectsClient;
83}
84
85impl ProjectsClientExt for Client {
86    fn projects(&self) -> ProjectsClient {
87        ProjectsClient::new(self.clone())
88    }
89}