pub enum Message {
Order(MessageKind),
Dispute(MessageKind),
CantDo(MessageKind),
Rate(MessageKind),
Dm(MessageKind),
Restore(MessageKind),
}Expand description
Top-level Mostro message exchanged between users and Mostro.
Message is a tagged union: every variant carries the shared
MessageKind body, while the variant itself tells the receiver which
channel the message belongs to (orders, disputes, DMs, rating, can’t-do,
session restore). Serializes as kebab-case JSON.
Variants§
Order(MessageKind)
Order-channel message.
Dispute(MessageKind)
Dispute-channel message.
CantDo(MessageKind)
“Can’t do” response returned by the Mostro node.
Rate(MessageKind)
Rating message (server-initiated rate request or client rate).
Dm(MessageKind)
Direct message between users.
Restore(MessageKind)
Session restore request/response.
Implementations§
Source§impl Message
impl Message
Sourcepub fn new_order(
id: Option<Uuid>,
request_id: Option<u64>,
trade_index: Option<i64>,
action: Action,
payload: Option<Payload>,
) -> Self
pub fn new_order( id: Option<Uuid>, request_id: Option<u64>, trade_index: Option<i64>, action: Action, payload: Option<Payload>, ) -> Self
Build a new Message::Order wrapping a freshly constructed
MessageKind.
Sourcepub fn new_dispute(
id: Option<Uuid>,
request_id: Option<u64>,
trade_index: Option<i64>,
action: Action,
payload: Option<Payload>,
) -> Self
pub fn new_dispute( id: Option<Uuid>, request_id: Option<u64>, trade_index: Option<i64>, action: Action, payload: Option<Payload>, ) -> Self
Build a new Message::Dispute wrapping a freshly constructed
MessageKind.
Sourcepub fn new_restore(payload: Option<Payload>) -> Self
pub fn new_restore(payload: Option<Payload>) -> Self
Build a new Message::Restore with Action::RestoreSession.
According to MessageKind::verify, the payload for a restore
request must be None. Any other payload yields an invalid message.
Sourcepub fn cant_do(
id: Option<Uuid>,
request_id: Option<u64>,
payload: Option<Payload>,
) -> Self
pub fn cant_do( id: Option<Uuid>, request_id: Option<u64>, payload: Option<Payload>, ) -> Self
Build a new Message::CantDo message (a structured refusal sent by
Mostro when a request cannot be fulfilled).
Sourcepub fn new_dm(
id: Option<Uuid>,
request_id: Option<u64>,
action: Action,
payload: Option<Payload>,
) -> Self
pub fn new_dm( id: Option<Uuid>, request_id: Option<u64>, action: Action, payload: Option<Payload>, ) -> Self
Build a new Message::Dm carrying a direct message between users.
Sourcepub fn from_json(json: &str) -> Result<Self, ServiceError>
pub fn from_json(json: &str) -> Result<Self, ServiceError>
Parse a Message from its JSON representation.
Sourcepub fn as_json(&self) -> Result<String, ServiceError>
pub fn as_json(&self) -> Result<String, ServiceError>
Serialize the message to a JSON string.
Sourcepub fn get_inner_message_kind(&self) -> &MessageKind
pub fn get_inner_message_kind(&self) -> &MessageKind
Borrow the inner MessageKind regardless of the variant.
Sourcepub fn inner_action(&self) -> Option<Action>
pub fn inner_action(&self) -> Option<Action>
Return the Action of the inner MessageKind.
Always returns Some for the current variant set; the Option is
kept for API stability.
Sourcepub fn verify(&self) -> bool
pub fn verify(&self) -> bool
Validate that the inner MessageKind is consistent with its
Action. Delegates to MessageKind::verify.
Sourcepub fn sign(message: String, keys: &Keys) -> Signature
pub fn sign(message: String, keys: &Keys) -> Signature
Produce a Schnorr signature over the SHA-256 digest of message
using keys.
This is the signature embedded in the rumor tuple when
crate::nip59::wrap_message is called with
WrapOptions::signed set to
true. It binds a message to the sender’s trade keys without
relying on the outer Nostr event signature.
Sourcepub fn verify_signature(
message: String,
pubkey: PublicKey,
sig: Signature,
) -> bool
pub fn verify_signature( message: String, pubkey: PublicKey, sig: Signature, ) -> bool
Verify a signature previously produced by Message::sign.
Returns true when sig is a valid Schnorr signature of the
SHA-256 digest of message under pubkey, false otherwise
(including when pubkey has no x-only representation).
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Message
impl<'de> Deserialize<'de> for Message
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for Message
impl RefUnwindSafe for Message
impl Send for Message
impl Sync for Message
impl Unpin for Message
impl UnsafeUnpin for Message
impl UnwindSafe for Message
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more