fix add authenticator response parsing again

This commit is contained in:
Carson McManus 2021-08-09 22:46:50 -04:00
parent 91e2a1b2c6
commit 555b47b3fb
2 changed files with 27 additions and 2 deletions

View file

@ -0,0 +1 @@
{"response":{"status":29}}

View file

@ -509,23 +509,31 @@ pub struct SteamApiResponse<T> {
#[derive(Debug, Clone, Deserialize)] #[derive(Debug, Clone, Deserialize)]
pub struct AddAuthenticatorResponse { pub struct AddAuthenticatorResponse {
/// Shared secret between server and authenticator /// Shared secret between server and authenticator
#[serde(default)]
pub shared_secret: String, pub shared_secret: String,
/// Authenticator serial number (unique per token) /// Authenticator serial number (unique per token)
#[serde(default)]
pub serial_number: String, pub serial_number: String,
/// code used to revoke authenticator /// code used to revoke authenticator
#[serde(default)]
pub revocation_code: String, pub revocation_code: String,
/// URI for QR code generation /// URI for QR code generation
#[serde(default)]
pub uri: String, pub uri: String,
/// Current server time /// Current server time
#[serde(deserialize_with = "parse_json_string_as_number")] #[serde(default, deserialize_with = "parse_json_string_as_number")]
pub server_time: u64, pub server_time: u64,
/// Account name to display on token client /// Account name to display on token client
#[serde(default)]
pub account_name: String, pub account_name: String,
/// Token GID assigned by server /// Token GID assigned by server
#[serde(default)]
pub token_gid: String, pub token_gid: String,
/// Secret used for identity attestation (e.g., for eventing) /// Secret used for identity attestation (e.g., for eventing)
#[serde(default)]
pub identity_secret: String, pub identity_secret: String,
/// Spare shared secret /// Spare shared secret
#[serde(default)]
pub secret_1: String, pub secret_1: String,
/// Result code /// Result code
pub status: i32, pub status: i32,
@ -585,3 +593,19 @@ fn test_parse_add_auth_response() {
assert_eq!(resp.shared_secret, "wGwZx=sX5MmTxi6QgA3Gi"); assert_eq!(resp.shared_secret, "wGwZx=sX5MmTxi6QgA3Gi");
assert_eq!(resp.revocation_code, "R123456"); assert_eq!(resp.revocation_code, "R123456");
} }
#[test]
fn test_parse_add_auth_response2() {
let result = serde_json::from_str::<SteamApiResponse<AddAuthenticatorResponse>>(include_str!(
"fixtures/api-responses/add-authenticator-2.json"
));
assert!(
matches!(result, Ok(_)),
"got error: {}",
result.unwrap_err()
);
let resp = result.unwrap().response;
assert_eq!(resp.status, 29);
}