Struct threema_gateway::IncomingMessage[][src]

pub struct IncomingMessage {
    pub from: String,
    pub to: String,
    pub message_id: String,
    pub date: usize,
    pub nonce: Vec<u8>,
    pub box_data: Vec<u8>,
    pub nickname: Option<String>,
}

An incoming message received from Threema Gateway.

To receive the message, you’ll need to provide your own HTTP callback server implementation. The request body bytes that are received this way can then be parsed using IncomingMessage::from_urlencoded_bytes.

Note: The IncomingMessage::from_urlencoded_bytes function validates the MAC, that’s why it’s not included in here again.

See https://gateway.threema.ch/de/developer/api for details.

Fields

from: String

Sender identity (8 characters)

to: String

Your API identity (8 characters, usually starts with ‘*’)

message_id: String

Message ID assigned by the sender (8 bytes, hex encoded)

date: usize

Message date set by the sender (UNIX timestamp)

nonce: Vec<u8>

Nonce used for encryption (24 bytes, hex encoded)

box_data: Vec<u8>

Encrypted message data (max. 4000 bytes, hex encoded)

nickname: Option<String>

Public nickname of the sender, if set

Implementations

impl IncomingMessage[src]

pub fn from_urlencoded_bytes(
    bytes: impl AsRef<[u8]>,
    api_secret: &str
) -> Result<Self, ApiError>
[src]

Deserialize an incoming Threema Gateway message in application/x-www-form-urlencoded format.

This will validate the MAC. If the MAC is invalid, ApiError::InvalidMac will be returned.

Note: You should probably not use this directly, but instead use E2eApi::decode_incoming_message!

pub fn decrypt_box(
    &self,
    public_key: &PublicKey,
    private_key: &SecretKey
) -> Result<Vec<u8>, CryptoError>
[src]

Decrypt the box using the specified keys and remove padding.

The public key belongs to the sender in the from field. The private key belongs to the gateway ID in the to field.

The PKCS#7 padding will be removed. If the padding is missing or invalid, an CryptoError::BadPadding will be returned.

Note: For more convenience, you might want to prefer the shortcut E2eApi::decrypt_incoming_message!

Trait Implementations

impl Debug for IncomingMessage[src]

impl<'de> Deserialize<'de> for IncomingMessage[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

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

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.