#activity-stream #specification #activity-pub #serialization #protocols #deserialize #order

activityrust

ActivityRust is an implementation of the ActivityStream specifications

1 unstable release

0.1.0 Dec 19, 2019

#2172 in Encoding

MIT license

115KB
2.5K SLoC

ActivityRust

What is ActivityRust ?

ActivityRust is a crate that allows a user to manage the structures used by common implementations of the ActivityPub protocol. In order to do so, it tries to be compilant with:

  • The ActivityStream Vocabulary, as defined here
  • The ActivityPub extensions, as defined here
  • Parts of the W3ID Security extension, as defined here
  • The WebFinger schema ActivityRust allows creation and edition of these structures, but can also serialize and deserialize them to json.

How to use ActivityRust ?

Creating an ActivityStream entity

extern crate activityrust;
// Import the required traits
use activityrust::traits::properties::*;

use activityrust::entities::actortypes::ActivityStreamPerson;
use url::Url;

fn main() {

  let mut activity = ActivityStreamPerson::create();
  let activity_url = Url::parse("http://test.test").unwrap();
  activity.set_id(activity_url);

}

As ActivityStream, ActivityRust supports setting null values for properties. In practice, it means that you can do this:

  activity.set_summary::<String, Option<String>>(None);

Deserializing an ActivityStream entity

ActivityRust supports the serde module, and all entities can be deserialized to their proper types and serialized to JSON.

Dependencies

~4.5MB
~115K SLoC