Struct nostr_types::EventV2

source ·
pub struct EventV2 {
    pub id: Id,
    pub pubkey: PublicKey,
    pub created_at: Unixtime,
    pub kind: EventKind,
    pub sig: Signature,
    pub content: String,
    pub tags: Vec<TagV2>,
}
Expand description

The main event type

Fields§

§id: Id

The Id of the event, generated as a SHA256 of the inner event data

§pubkey: PublicKey

The public key of the actor who created the event

§created_at: Unixtime

The (unverified) time at which the event was created

§kind: EventKind

The kind of event

§sig: Signature

The signature of the event, which cryptographically verifies that the holder of the PrivateKey matching the event’s PublicKey generated (or authorized) this event. The signature is taken over the id field only, but the id field is taken over the rest of the event data.

§content: String

The content of the event

§tags: Vec<TagV2>

A set of tags that apply to the event

Implementations§

source§

impl EventV2

source

pub fn verify(&self, maxtime: Option<Unixtime>) -> Result<(), Error>

Check the validity of an event. This is useful if you deserialize an event from the network. If you create an event using new() it should already be trustworthy.

source

pub fn k_tag_kind(&self) -> Option<EventKind>

Get the k-tag kind, if any

source

pub fn people(&self) -> Vec<(PublicKeyHex, Option<RelayUrl>, Option<String>)>

If the event refers to people by tag, get all the PublicKeys it refers to along with recommended relay URL and petname for each

source

pub fn is_tagged(&self, pubkey: &PublicKey) -> bool

If the pubkey is tagged in the event

source

pub fn people_referenced_in_content(&self) -> Vec<PublicKey>

If the event refers to people within the contents, get all the PublicKeys it refers to within the contents.

source

pub fn referred_events(&self) -> Vec<EventReference>

All events IDs that this event refers to, whether root, reply, mention, or otherwise along with optional recommended relay URLs

source

pub fn replies_to(&self) -> Option<EventReference>

Get a reference to another event that this event replies to. An event can only reply to one other event via ‘e’ or ‘a’ tag from a feed-displayable event that is not a Repost.

source

pub fn replies_to_root(&self) -> Option<EventReference>

If this event replies to a thread, get that threads root event Id if available, along with an optional recommended_relay_url

source

pub fn mentions(&self) -> Vec<EventReference>

If this event mentions others, get those other event Ids and optional recommended relay Urls

source

pub fn reacts_to(&self) -> Option<(Id, String, Option<RelayUrl>)>

If this event reacts to another, get that other event’s Id, the reaction content, and an optional Recommended relay Url

source

pub fn deletes(&self) -> Option<(Vec<EventReference>, String)>

If this event deletes others, get all the EventReferences of the events that it deletes along with the reason for the deletion

source

pub fn delete_author_allowed(&self, by: PublicKey) -> bool

Can this event be deleted by the given public key?

source

pub fn zaps(&self) -> Result<Option<ZapData>, Error>

If this event zaps another event, get data about that.

That includes the Id, the amount, and the public key of the provider, all of which should be verified by the caller.

Errors returned from this are not fatal, but may be useful for explaining to a user why a zap receipt is invalid.

source

pub fn client(&self) -> Option<String>

If this event specifies the client that created it, return that client string

source

pub fn subject(&self) -> Option<String>

If this event specifies a subject, return that subject string

source

pub fn title(&self) -> Option<String>

If this event specifies a title, return that title string

source

pub fn summary(&self) -> Option<String>

If this event specifies a summary, return that summary string

source

pub fn content_warning(&self) -> Option<String>

If this event specifies a content warning, return that subject string

source

pub fn parameter(&self) -> Option<String>

If this is a parameterized event, get the parameter

source

pub fn hashtags(&self) -> Vec<String>

Return all the hashtags this event refers to

source

pub fn urls(&self) -> Vec<RelayUrl>

Return all the URLs this event refers to

source

pub fn pow(&self) -> u8

Get the proof-of-work count of leading bits

source

pub fn delegation(&self) -> EventDelegation

Was this event delegated, was that valid, and if so what is the pubkey of the delegator?

source

pub fn proxy(&self) -> Option<(&str, &str)>

If the event came through a proxy, get the (Protocol, Id)

source§

impl EventV2

source

pub fn get_id_from_speedy_bytes(bytes: &[u8]) -> Option<Id>

Read the ID of the event from a speedy encoding without decoding (zero allocation)

Note this function is fragile, if the Event structure is reordered, or if speedy code changes, this will break. Neither should happen.

source

pub fn get_pubkey_from_speedy_bytes(bytes: &[u8]) -> Option<PublicKey>

Read the pubkey of the event from a speedy encoding without decoding (close to zero allocation, VerifyingKey does stuff I didn’t check)

Note this function is fragile, if the Event structure is reordered, or if speedy code changes, this will break. Neither should happen.

source

pub fn get_created_at_from_speedy_bytes(bytes: &[u8]) -> Option<Unixtime>

Read the created_at of the event from a speedy encoding without decoding (zero allocation)

Note this function is fragile, if the Event structure is reordered, or if speedy code changes, this will break. Neither should happen.

source

pub fn get_kind_from_speedy_bytes(bytes: &[u8]) -> Option<EventKind>

Read the kind of the event from a speedy encoding without decoding (zero allocation)

Note this function is fragile, if the Event structure is reordered, or if speedy code changes, this will break. Neither should happen.

source

pub fn get_content_from_speedy_bytes(bytes: &[u8]) -> Option<&str>

Read the content of the event from a speedy encoding without decoding (zero allocation)

Note this function is fragile, if the Event structure is reordered, or if speedy code changes, this will break. Neither should happen.

source

pub fn tag_search_in_speedy_bytes( bytes: &[u8], re: &Regex ) -> Result<bool, Error>

Check if any human-readable tag matches the Regex in the speedy encoding without decoding the whole thing (because our TagV2 representation is so complicated, we do deserialize the tags for now)

Note this function is fragile, if the Event structure is reordered, or if speedy code changes, this will break. Neither should happen.

Trait Implementations§

source§

impl Clone for EventV2

source§

fn clone(&self) -> EventV2

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EventV2

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for EventV2

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl From<EventV2> for RumorV2

source§

fn from(e: EventV2) -> RumorV2

Converts to this type from the input type.
source§

impl PartialEq for EventV2

source§

fn eq(&self, other: &EventV2) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'a_, C_: Context> Readable<'a_, C_> for EventV2

source§

fn read_from<R_: Reader<'a_, C_>>(_reader_: &mut R_) -> Result<Self, C_::Error>

source§

fn minimum_bytes_needed() -> usize

§

fn read_from_buffer_with_ctx( context: C, buffer: &'a [u8] ) -> Result<Self, <C as Context>::Error>

§

fn read_with_length_from_buffer_with_ctx( context: C, buffer: &'a [u8] ) -> (Result<Self, <C as Context>::Error>, usize)

§

fn read_from_buffer_copying_data_with_ctx( context: C, buffer: &[u8] ) -> Result<Self, <C as Context>::Error>

§

fn read_with_length_from_buffer_copying_data_with_ctx( context: C, buffer: &[u8] ) -> (Result<Self, <C as Context>::Error>, usize)

§

fn read_with_length_from_buffer_copying_data_with_ctx_mut( context: &mut C, buffer: &[u8] ) -> (Result<Self, <C as Context>::Error>, usize)

§

fn read_from_stream_unbuffered_with_ctx<S>( context: C, stream: S ) -> Result<Self, <C as Context>::Error>
where S: Read,

§

fn read_from_stream_buffered_with_ctx<S>( context: C, stream: S ) -> Result<Self, <C as Context>::Error>
where S: Read,

§

fn read_from_file_with_ctx( context: C, path: impl AsRef<Path> ) -> Result<Self, <C as Context>::Error>

source§

impl Serialize for EventV2

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<C_: Context> Writable<C_> for EventV2

source§

fn write_to<T_: ?Sized + Writer<C_>>( &self, _writer_: &mut T_ ) -> Result<(), C_::Error>

§

fn write_to_buffer_with_ctx( &self, context: C, buffer: &mut [u8] ) -> Result<(), <C as Context>::Error>

§

fn write_to_buffer_with_ctx_mut( &self, context: &mut C, buffer: &mut [u8] ) -> Result<(), <C as Context>::Error>

§

fn write_to_vec_with_ctx( &self, context: C ) -> Result<Vec<u8>, <C as Context>::Error>

§

fn write_to_vec_with_ctx_mut( &self, context: &mut C ) -> Result<Vec<u8>, <C as Context>::Error>

§

fn write_to_stream_with_ctx<S>( &self, context: C, stream: S ) -> Result<(), <C as Context>::Error>
where S: Write,

§

fn write_to_file_with_ctx( &self, context: C, path: impl AsRef<Path> ) -> Result<(), <C as Context>::Error>

§

fn bytes_needed(&self) -> Result<usize, <C as Context>::Error>

source§

impl Eq for EventV2

source§

impl StructuralPartialEq for EventV2

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,