Crate threema_gateway

source ·
Expand description

§Threema Gateway SDK for Rust

This library makes it easy to use the Threema Gateway from Rust programs.

Documentation of the HTTP API can be found at gateway.threema.ch.

Note: This library is fully asynchronous (because the underlying HTTP client is async as well). To call the async methods, either call them from an async context, or wrap the returned future in a block_on method provided by an executor like tokio, async-std or smol.

§Example: Send simple (transport encrypted) message

use threema_gateway::{ApiBuilder, Recipient};

let from = "*YOUR_ID";
let to = Recipient::new_email("user@example.com");
let secret = "your-gateway-secret";
let text = "Very secret message!";

// Send
let api = ApiBuilder::new(from, secret).into_simple();
match api.send(&to, &text).await {
    Ok(msg_id) => println!("Sent. Message id is {}.", msg_id),
    Err(e) => println!("Could not send message: {:?}", e),
}

§Example: Send end-to-end encrypted message

use threema_gateway::{ApiBuilder, RecipientKey};

let from = "*YOUR_ID";
let to = "ECHOECHO";
let secret = "your-gateway-secret";
let private_key = "your-private-key";
let text = "Very secret message!";

// Create E2eApi instance
let api = ApiBuilder::new(from, secret)
    .with_private_key_str(private_key)
    .and_then(|builder| builder.into_e2e())
    .unwrap();

// Fetch recipient public key
// Note: In a real application, you should cache the public key
let recipient_key = api.lookup_pubkey(to).await.unwrap();

// Encrypt
let encrypted = api.encrypt_text_msg(text, &recipient_key)
    .expect("Could not encrypt text msg");

// Send
match api.send(&to, &encrypted, false).await {
    Ok(msg_id) => println!("Sent. Message id is {}.", msg_id),
    Err(e) => println!("Could not send message: {:?}", e),
}

For more examples, see the examples/ directory.

Modules§

  • Error types used in this library.

Structs§

Enums§

  • Different ways to look up a Threema ID in the directory.
  • A message type.
  • Different ways to specify a message recipient in basic mode.
  • The rendering type influences how a file message is displayed on the device of the recipient.

Functions§

  • Decrypt file data and optional thumbnail data with the provided symmetric key.
  • Encrypt a message with the specified msgtype for the recipient.
  • Encrypt file data and an optional thumbnail using a randomly generated symmetric key.
  • Encrypt raw data for the recipient.

Type Aliases§