circle_user_controlled_wallets/models/
auth.rs1use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Clone, Deserialize, Serialize)]
12#[serde(rename_all = "camelCase")]
13pub struct DeviceTokenSocialData {
14 pub device_token: String,
16 pub device_encryption_key: Option<String>,
18}
19
20#[derive(Debug, Clone, Deserialize, Serialize)]
22#[serde(rename_all = "camelCase")]
23pub struct DeviceTokenSocialResponse {
24 pub data: DeviceTokenSocialData,
26}
27
28#[derive(Debug, Clone, Deserialize, Serialize)]
32#[serde(rename_all = "camelCase")]
33pub struct DeviceTokenEmailData {
34 pub device_token: String,
36 pub device_encryption_key: Option<String>,
38 pub otp_token: Option<String>,
40}
41
42#[derive(Debug, Clone, Deserialize, Serialize)]
44#[serde(rename_all = "camelCase")]
45pub struct DeviceTokenEmailResponse {
46 pub data: DeviceTokenEmailData,
48}
49
50#[derive(Debug, Clone, Deserialize, Serialize)]
54#[serde(rename_all = "camelCase")]
55pub struct RefreshUserTokenData {
56 pub user_token: String,
58 pub encryption_key: Option<String>,
60 pub user_id: Option<String>,
62 pub refresh_token: Option<String>,
64}
65
66#[derive(Debug, Clone, Deserialize, Serialize)]
68#[serde(rename_all = "camelCase")]
69pub struct RefreshUserTokenResponse {
70 pub data: RefreshUserTokenData,
72}
73
74#[derive(Debug, Clone, Deserialize, Serialize)]
78#[serde(rename_all = "camelCase")]
79pub struct ResendOtpData {
80 pub otp_token: String,
82}
83
84#[derive(Debug, Clone, Deserialize, Serialize)]
86#[serde(rename_all = "camelCase")]
87pub struct ResendOtpResponse {
88 pub data: ResendOtpData,
90}
91
92#[derive(Debug, Clone, Deserialize, Serialize)]
96#[serde(rename_all = "camelCase")]
97pub struct DeviceTokenSocialRequest {
98 pub idempotency_key: String,
100 pub device_id: String,
102}
103
104#[derive(Debug, Clone, Deserialize, Serialize)]
106#[serde(rename_all = "camelCase")]
107pub struct DeviceTokenEmailRequest {
108 pub idempotency_key: String,
110 pub device_id: String,
112 pub email: String,
114}
115
116#[derive(Debug, Clone, Deserialize, Serialize)]
118#[serde(rename_all = "camelCase")]
119pub struct RefreshUserTokenRequest {
120 pub idempotency_key: String,
122 pub refresh_token: String,
124 pub device_id: String,
126}
127
128#[derive(Debug, Clone, Deserialize, Serialize)]
130#[serde(rename_all = "camelCase")]
131pub struct ResendOtpRequest {
132 pub idempotency_key: String,
134 pub otp_token: String,
136 pub email: String,
138 pub device_id: String,
140}
141
142#[cfg(test)]
145mod tests {
146 use super::*;
147
148 #[test]
149 fn device_token_social_request_camel_case() -> Result<(), Box<dyn std::error::Error>> {
150 let req = DeviceTokenSocialRequest {
151 idempotency_key: "key1".to_string(),
152 device_id: "dev1".to_string(),
153 };
154 let s = serde_json::to_string(&req)?;
155 assert!(s.contains("idempotencyKey"), "{s}");
156 assert!(s.contains("deviceId"), "{s}");
157 Ok(())
158 }
159
160 #[test]
161 fn refresh_user_token_response_round_trip() -> Result<(), Box<dyn std::error::Error>> {
162 let json = r#"{"data":{"userToken":"tok","encryptionKey":"key","userId":"u1","refreshToken":"rt"}}"#;
163 let resp: RefreshUserTokenResponse = serde_json::from_str(json)?;
164 assert_eq!(resp.data.user_token, "tok");
165 assert_eq!(resp.data.user_id.as_deref(), Some("u1"));
166 Ok(())
167 }
168}