bitwarden_core/auth/api/request/
access_token_request.rs

1use log::debug;
2use serde::{Deserialize, Serialize};
3use uuid::Uuid;
4
5use crate::{
6    auth::{api::response::IdentityTokenResponse, login::LoginError},
7    client::ApiConfigurations,
8};
9
10#[derive(Serialize, Deserialize, Debug)]
11pub struct AccessTokenRequest {
12    scope: String,
13    client_id: String,
14    client_secret: String,
15    grant_type: String,
16}
17
18impl AccessTokenRequest {
19    pub fn new(access_token_id: Uuid, client_secret: &String) -> Self {
20        let obj = Self {
21            scope: "api.secrets".to_string(),
22            client_id: access_token_id.to_string(),
23            client_secret: client_secret.to_string(),
24            grant_type: "client_credentials".to_string(),
25        };
26        debug!("initializing {:?}", obj);
27        obj
28    }
29
30    pub(crate) async fn send(
31        &self,
32        configurations: &ApiConfigurations,
33    ) -> Result<IdentityTokenResponse, LoginError> {
34        super::send_identity_connect_request(configurations, None, &self).await
35    }
36}