use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum SameSite {
Strict,
Lax,
None,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct CookieRecord {
pub name: String,
pub value: String,
pub domain: String,
pub path: String,
pub secure: bool,
pub http_only: bool,
pub same_site: SameSite,
#[serde(skip_serializing_if = "Option::is_none")]
pub partition_key: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub expires_at: Option<String>,
}
impl CookieRecord {
pub fn new(name: impl Into<String>, value: impl Into<String>, domain: impl Into<String>) -> Self {
Self {
name: name.into(),
value: value.into(),
domain: domain.into(),
path: "/".into(),
secure: true,
http_only: true,
same_site: SameSite::Lax,
partition_key: None,
expires_at: None,
}
}
}