Event
JSON de/serialization
Rust
use nostr_sdk::prelude::*;
pub fn event() -> Result<()> {
// Deserialize from json
let json = r#"{"content":"uRuvYr585B80L6rSJiHocw==?iv=oh6LVqdsYYol3JfFnXTbPA==","created_at":1640839235,"id":"2be17aa3031bdcb006f0fce80c146dea9c1c0268b0af2398bb673365c6444d45","kind":4,"pubkey":"f86c44a2de95d9149b51c6a29afeabba264c18e2fa7c49de93424a0c56947785","sig":"a5d9290ef9659083c490b303eb7ee41356d8778ff19f2f91776c8dc4443388a64ffcf336e61af4c25c05ac3ae952d1ced889ed655b67790891222aaa15b99fdd","tags":[["p","13adc511de7e1cfcf1c6b7f6365fb5a03442d7bcacf565ea57fa7770912c023d"]]}"#;
let event = Event::from_json(json)?;
// Serialize as json
let json = event.as_json();
println!("{json}");
Ok(())
}
Python
from nostr_sdk import Event
def event_json():
# Deserialize from json
json = '{"content":"uRuvYr585B80L6rSJiHocw==?iv=oh6LVqdsYYol3JfFnXTbPA==","created_at":1640839235,"id":"2be17aa3031bdcb006f0fce80c146dea9c1c0268b0af2398bb673365c6444d45","kind":4,"pubkey":"f86c44a2de95d9149b51c6a29afeabba264c18e2fa7c49de93424a0c56947785","sig":"a5d9290ef9659083c490b303eb7ee41356d8778ff19f2f91776c8dc4443388a64ffcf336e61af4c25c05ac3ae952d1ced889ed655b67790891222aaa15b99fdd","tags":[["p","13adc511de7e1cfcf1c6b7f6365fb5a03442d7bcacf565ea57fa7770912c023d"]]}'
event = Event.from_json(json)
# Serialize as json
json = event.as_json()
print("\nEvent JSON:")
print(f" {json}")
JavaScript
import { Event } from "@rust-nostr/nostr-sdk";
export function eventJson() {
// Deserialize from json
let json1 = '{"content":"uRuvYr585B80L6rSJiHocw==?iv=oh6LVqdsYYol3JfFnXTbPA==","created_at":1640839235,"id":"2be17aa3031bdcb006f0fce80c146dea9c1c0268b0af2398bb673365c6444d45","kind":4,"pubkey":"f86c44a2de95d9149b51c6a29afeabba264c18e2fa7c49de93424a0c56947785","sig":"a5d9290ef9659083c490b303eb7ee41356d8778ff19f2f91776c8dc4443388a64ffcf336e61af4c25c05ac3ae952d1ced889ed655b67790891222aaa15b99fdd","tags":[["p","13adc511de7e1cfcf1c6b7f6365fb5a03442d7bcacf565ea57fa7770912c023d"]]}'
let event = Event.fromJson(json1)
// Serialize as json
let json2 = event.asJson()
console.log(json2);
}
Kotlin
fun json() {
// Deserialize from json
val json =
"{\"content\":\"uRuvYr585B80L6rSJiHocw==?iv=oh6LVqdsYYol3JfFnXTbPA==\",\"created_at\":1640839235,\"id\":\"2be17aa3031bdcb006f0fce80c146dea9c1c0268b0af2398bb673365c6444d45\",\"kind\":4,\"pubkey\":\"f86c44a2de95d9149b51c6a29afeabba264c18e2fa7c49de93424a0c56947785\",\"sig\":\"a5d9290ef9659083c490b303eb7ee41356d8778ff19f2f91776c8dc4443388a64ffcf336e61af4c25c05ac3ae952d1ced889ed655b67790891222aaa15b99fdd\",\"tags\":[[\"p\",\"13adc511de7e1cfcf1c6b7f6365fb5a03442d7bcacf565ea57fa7770912c023d\"]]}"
val event = Event.fromJson(json)
// Serialize as json
println(event.asJson())
}
Swift
import NostrSDK
import Foundation
func json() {
// TODO
}
Flutter
TODO
Compose with event builder
A convenient way to compose events is by using the EventBuilder
. It allow to compose standard
and/or custom
events.
Rust
use nostr_sdk::prelude::*;
pub fn event() -> Result<()> {
let keys = Keys::generate();
// Compose custom event
let custom_event = EventBuilder::new(Kind::Custom(1111), "").sign_with_keys(&keys)?;
// Compose text note
let textnote_event = EventBuilder::text_note("Hello").sign_with_keys(&keys)?;
// Compose reply to above text note
let reply_event = EventBuilder::text_note("Reply to hello")
.tag(Tag::event(textnote_event.id))
.sign_with_keys(&keys)?;
// Compose POW event
let pow_event =
EventBuilder::text_note("Another reply with POW")
.tag(Tag::event(textnote_event.id))
.pow(20)
.sign_with_keys(&keys)?;
Ok(())
}
Python
from nostr_sdk import Keys, EventBuilder, Kind, Tag
def event_builder():
keys = Keys.generate()
# Compose custom event
custom_event = EventBuilder(Kind(1111), "").sign_with_keys(keys)
# Compose text note
textnote_event = EventBuilder.text_note("Hello").sign_with_keys(keys)
# Compose reply to above text note
reply_event = EventBuilder.text_note("Reply to hello").tags([Tag.event(textnote_event.id())]).sign_with_keys(keys)
# Compose POW event
pow_event = EventBuilder.text_note("Another reply with POW").tags([Tag.event(textnote_event.id())]).pow(20).sign_with_keys(keys)
JavaScript
import { Keys, EventBuilder, Tag, Timestamp, Kind } from "@rust-nostr/nostr-sdk"
export function eventBuilder() {
let keys = Keys.generate();
// Compose custom event
let kind = new Kind(1111);
let customEvent = new EventBuilder(kind, "").signWithKeys(keys);
// Compose text note
let textnoteEvent = EventBuilder.textNote("Hello").signWithKeys(keys);
// Compose reply to above text note
let replyEvent =
EventBuilder.textNote("Reply to hello")
.tags([Tag.event(textnoteEvent.id)])
.signWithKeys(keys);
// Compose POW event
let powEvent =
EventBuilder.textNote("Another reply with POW")
.tags([Tag.event(textnoteEvent.id)])
.pow(20)
.signWithKeys(keys);
// Compose note with custom timestamp
let customTimestamp =
EventBuilder.textNote("Note with custom timestamp")
.customCreatedAt(Timestamp.fromSecs(12345678))
.signWithKeys(keys);
}
Kotlin
fun builder() {
val keys = Keys.generate();
// Compose custom event
val customEvent = EventBuilder(kind = Kind(1111u), content = "").signWithKeys(keys);
// Compose text note
val textNoteEvent = EventBuilder.textNote("Hello").signWithKeys(keys);
// Compose reply to above text note
val replyEvent = EventBuilder.textNote("Reply to hello")
.tags(listOf(Tag.event(textNoteEvent.id())))
.signWithKeys(keys);
// Compose POW event
val powEvent =
EventBuilder.textNote("Another reply with POW")
.tags(listOf(Tag.event(textNoteEvent.id())))
.pow(20u)
.signWithKeys(keys);
println(powEvent.asJson())
}
Swift
import NostrSDK
import Foundation
func builder() {
// TODO
}
Flutter
TODO