firebase_admin/auth/session_cookie/
create.rs1use crate::auth::error::{parse_identity_toolkit_response, AuthError};
4use crate::core::HttpClient;
5use serde::{Deserialize, Serialize};
6use std::time::Duration;
7
8#[derive(Debug, Serialize)]
9struct CreateSessionCookieRequest<'a> {
10 #[serde(rename = "idToken")]
11 id_token: &'a str,
12 #[serde(rename = "validDuration")]
13 valid_duration_secs: u64,
14}
15
16#[derive(Debug, Deserialize)]
17struct CreateSessionCookieResponse {
18 #[serde(rename = "sessionCookie")]
19 session_cookie: String,
20}
21
22pub async fn create_session_cookie(
27 http: &HttpClient,
28 endpoint: &str,
29 id_token: &str,
30 valid_duration: Duration,
31) -> Result<String, AuthError> {
32 let body = CreateSessionCookieRequest {
33 id_token,
34 valid_duration_secs: valid_duration.as_secs(),
35 };
36
37 let response = http.inner().post(endpoint).json(&body).send().await?;
38 let parsed: CreateSessionCookieResponse = parse_identity_toolkit_response(response).await?;
39
40 Ok(parsed.session_cookie)
41}