[][src]Crate threema_gateway

Threema Gateway SDK for Rust

CircleCI Crates.io

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.

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) {
    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 public key
// Note: In a real application, you should cache the public key
let public_key = api.lookup_pubkey(to).unwrap();

// Encrypt
let recipient_key: RecipientKey = public_key.parse().unwrap();
let encrypted = api.encrypt_text_msg(text, &recipient_key);

// Send
match api.send(&to, &encrypted, false) {
    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

errors

Error types used in this library.

Structs

ApiBuilder

A convenient way to set up the API object.

BlobId

A 16-byte blob ID.

Capabilities

A struct containing flags according to the capabilities of a Threema ID.

E2eApi

Struct to talk to the E2E API (with end-to-end encryption).

EncryptedMessage

An encrypted message. Contains both the ciphertext and the nonce.

FileMessage

A file message.

FileMessageBuilder

Builder for FileMessage.

Key

Key for symmetric authenticated encryption

Mime

A parsed mime or media type.

PublicKey

PublicKey for asymmetric authenticated encryption

RecipientKey

The public key of a recipient.

SecretKey

SecretKey for asymmetric authenticated encryption

SimpleApi

Struct to talk to the simple API (without end-to-end encryption).

Enums

LookupCriterion

Different ways to look up a Threema ID in the directory.

MessageType

A message type.

Recipient

Different ways to specify a message recipient in basic mode.

RenderingType

The rendering type influences how a file message is displayed on the device of the recipient.