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
15pub struct ProjectsClient {
16    pub client: Client,
17}
18
19impl ProjectsClient {
20    pub fn new(client: Client) -> Self {
21        Self { client }
22    }
23
24    pub async fn get(
25        &self,
26        input: &ProjectGetRequest,
27    ) -> Result<ProjectResponse, SecretsManagerError> {
28        get_project(&self.client, input).await
29    }
30
31    pub async fn create(
32        &self,
33        input: &ProjectCreateRequest,
34    ) -> Result<ProjectResponse, SecretsManagerError> {
35        create_project(&self.client, input).await
36    }
37
38    pub async fn list(
39        &self,
40        input: &ProjectsListRequest,
41    ) -> Result<ProjectsResponse, SecretsManagerError> {
42        list_projects(&self.client, input).await
43    }
44
45    pub async fn update(
46        &self,
47        input: &ProjectPutRequest,
48    ) -> Result<ProjectResponse, SecretsManagerError> {
49        update_project(&self.client, input).await
50    }
51
52    pub async fn delete(
53        &self,
54        input: ProjectsDeleteRequest,
55    ) -> Result<ProjectsDeleteResponse, SecretsManagerError> {
56        delete_projects(&self.client, input).await
57    }
58}
59
60/// This trait is for backward compatibility
61pub trait ClientProjectsExt {
62    fn projects(&self) -> ClientProjects;
63}
64
65impl ClientProjectsExt for Client {
66    fn projects(&self) -> ClientProjects {
67        ProjectsClient::new(self.clone())
68    }
69}
70
71pub trait ProjectsClientExt {
72    fn projects(&self) -> ProjectsClient;
73}
74
75impl ProjectsClientExt for Client {
76    fn projects(&self) -> ProjectsClient {
77        ProjectsClient::new(self.clone())
78    }
79}