1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
/**
* Representation of Actors in the activitystream.
*
* SPDX-FileCopyrightText: 2023 Eilertsens Kodeknekkeri
* SPDX-FileCopyrightText: 2023 Harald Eilertsen <haraldei@anduin.net>
*
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
use serde::Deserialize;
use url::Url;
#[derive(Debug, Deserialize, PartialEq)]
pub struct Actor {
name: String,
address: String,
url: Url,
id: String,
id_sig: String,
key: String,
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn test_parsing_actor_from_json() {
let json = r#"
{
"name": "Benjamin Franklin",
"address": "ben@example.com",
"url": "https://example.com/channel/ben",
"network": "zot6",
"photo": {
"mimetype": "image/jpeg",
"src": "https://example.com/photo/profile/m/2"
},
"id": "rUpgk2qbvnWLoKIXOlZlwlqI5vk8C4NgudFNjbcmnOBjFSXU34TObkZEClaPSfKnpFZpg87tANtko7WGs7QRvA",
"id_sig": "sha256.ZD8uwYmUEG_d02Y...",
"key": "-----BEGIN PUBLIC KEY-----\n....\n-----END PUBLIC KEY-----\n"
}"#;
let actor: Actor = serde_json::from_str(&json).unwrap();
assert_eq!("Benjamin Franklin", actor.name);
assert_eq!("ben@example.com", actor.address);
assert_eq!("https://example.com/channel/ben", actor.url.to_string());
assert_eq!("rUpgk2qbvnWLoKIXOlZlwlqI5vk8C4NgudFNjbcmnOBjFSXU34TObkZEClaPSfKnpFZpg87tANtko7WGs7QRvA", actor.id);
}
}
|