Add parse example to readme/lib

This commit is contained in:
asonix 2020-05-17 20:18:37 -05:00
parent 32b4ce2eef
commit 7fc9708a7d
2 changed files with 92 additions and 2 deletions

View file

@ -196,7 +196,7 @@ And this type would only deserialize for JSON where `"type":"Person"`
## Examples ## Examples
### Basic ### Create
```rust ```rust
use activitystreams_new::{ use activitystreams_new::{
@ -232,6 +232,51 @@ fn main() -> Result<(), anyhow::Error> {
} }
``` ```
### Parse
```rust
use activitystreams_new::{activity::ActorAndObject, prelude::*};
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
pub enum AcceptedTypes {
Accept,
Announce,
Create,
Delete,
Follow,
Reject,
Update,
Undo,
}
pub type AcceptedActivity = ActorAndObject<AcceptedTypes>;
pub fn handle_activity(activity: AcceptedActivity) -> Result<(), anyhow::Error> {
println!("Actor: {:?}", activity.actor());
println!("Object: {:?}", activity.object());
match activity.kind() {
Some(AcceptedTypes::Accept) => println!("Accept"),
Some(AcceptedTypes::Announce) => println!("Announce"),
Some(AcceptedTypes::Create) => println!("Create"),
Some(AcceptedTypes::Delete) => println!("Delete"),
Some(AcceptedTypes::Follow) => println!("Follow"),
Some(AcceptedTypes::Reject) => println!("Reject"),
Some(AcceptedTypes::Update) => println!("Update"),
Some(AcceptedTypes::Undo) => println!("Undo"),
None => return Err(anyhow::Error::msg("No activity type provided")),
}
Ok(())
}
static EXAMPLE_JSON: &str = r#"{"actor":"https://asonix.dog/users/asonix","object":"https://asonix.dog/users/asonix/posts/1","type":"Announce"}"#;
fn main() -> Result<(), anyhow::Error> {
handle_activity(serde_json::from_str(EXAMPLE_JSON)?)
}
```
## Contributing ## Contributing
Feel free to open issues for anything you find an issue with. Please note that any contributed code will be licensed under the GPLv3. Feel free to open issues for anything you find an issue with. Please note that any contributed code will be licensed under the GPLv3.

View file

@ -196,7 +196,7 @@
//! //!
//! ## Examples //! ## Examples
//! //!
//! ### Basic //! ### Create
//! //!
//! ```rust //! ```rust
//! use activitystreams_new::{ //! use activitystreams_new::{
@ -232,6 +232,51 @@
//! } //! }
//! ``` //! ```
//! //!
//! ### Parse
//!
//! ```rust
//! use activitystreams_new::{activity::ActorAndObject, prelude::*};
//!
//! #[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
//! pub enum AcceptedTypes {
//! Accept,
//! Announce,
//! Create,
//! Delete,
//! Follow,
//! Reject,
//! Update,
//! Undo,
//! }
//!
//! pub type AcceptedActivity = ActorAndObject<AcceptedTypes>;
//!
//! pub fn handle_activity(activity: AcceptedActivity) -> Result<(), anyhow::Error> {
//! println!("Actor: {:?}", activity.actor());
//! println!("Object: {:?}", activity.object());
//!
//! match activity.kind() {
//! Some(AcceptedTypes::Accept) => println!("Accept"),
//! Some(AcceptedTypes::Announce) => println!("Announce"),
//! Some(AcceptedTypes::Create) => println!("Create"),
//! Some(AcceptedTypes::Delete) => println!("Delete"),
//! Some(AcceptedTypes::Follow) => println!("Follow"),
//! Some(AcceptedTypes::Reject) => println!("Reject"),
//! Some(AcceptedTypes::Update) => println!("Update"),
//! Some(AcceptedTypes::Undo) => println!("Undo"),
//! None => return Err(anyhow::Error::msg("No activity type provided")),
//! }
//!
//! Ok(())
//! }
//!
//! static EXAMPLE_JSON: &str = r#"{"actor":"https://asonix.dog/users/asonix","object":"https://asonix.dog/users/asonix/posts/1","type":"Announce"}"#;
//!
//! fn main() -> Result<(), anyhow::Error> {
//! handle_activity(serde_json::from_str(EXAMPLE_JSON)?)
//! }
//! ```
//!
//! ## Contributing //! ## Contributing
//! Feel free to open issues for anything you find an issue with. Please note that any contributed code will be licensed under the GPLv3. //! Feel free to open issues for anything you find an issue with. Please note that any contributed code will be licensed under the GPLv3.
//! //!