activitystreams/examples/de.rs

67 lines
2 KiB
Rust
Raw Normal View History

use activitystreams::{
2020-07-25 22:11:42 +00:00
collection::OrderedCollection,
object::{ApObject, Page},
prelude::*,
};
use anyhow::Error;
fn main() -> Result<(), Error> {
let collection_json = r#"{
"type": "OrderedCollection",
"id": "http://lemmy_alpha:8540/federation/c/main",
"context": "https://www.w3.org/ns/activitystreams",
"items": [
{
"type": "Page",
"id": "http://lemmy_alpha:8540/federation/post/2",
"attributedTo": "http://lemmy_alpha:8540/federation/u/2",
"content": "test",
"context": "https://www.w3.org/ns/activitystreams",
"name": "test",
"published": "2020-03-13T00:14:41.188634+00:00"
},
{
"type": "Page",
"id": "http://lemmy_alpha:8540/federation/post/1",
"attributedTo": "http://lemmy_alpha:8540/federation/u/2",
"context": "https://www.w3.org/ns/activitystreams",
"name": "test",
"published": "2020-03-13T00:13:56.311479+00:00"
}
],
"totalItems": 2
}"#;
let page_json = r#"{
"type": "Page",
"id": "http://lemmy_alpha:8540/federation/post/2",
"attributedTo": "http://lemmy_alpha:8540/federation/u/2",
"content": "test",
"name": "test",
"published": "2020-03-13T00:14:41.188634+00:00"
}"#;
2020-07-25 22:11:42 +00:00
let page: ApObject<Page> = serde_json::from_str(page_json)?;
println!("{:#?}", page);
2020-07-25 22:11:42 +00:00
let mut collection: ApObject<OrderedCollection> = serde_json::from_str(collection_json)?;
println!("{:#?}", collection);
2020-07-25 22:11:42 +00:00
let v: Vec<ApObject<Page>> = collection
2020-07-26 02:22:18 +00:00
.take_items()
2020-07-25 22:11:42 +00:00
.into_iter()
2022-03-08 18:25:28 +00:00
.flat_map(|o| o.into_iter())
2020-07-25 22:11:42 +00:00
.filter_map(|any_base| any_base.take_base())
.map(|base| base.solidify().and_then(|o| o.extend()))
.collect::<Result<Vec<_>, _>>()?;
2020-04-02 14:41:06 +00:00
2020-03-14 20:27:43 +00:00
println!("{:#?}", v);
2020-07-25 22:11:42 +00:00
let v = v
.into_iter()
.map(|o| o.into_any_base())
.collect::<Result<Vec<_>, _>>()?;
collection.set_many_items(v);
2020-03-14 20:27:43 +00:00
Ok(())
}