[][src]Crate threema_gateway

Threema Gateway SDK for Rust

CircleCI Crates.io 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.

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::from_str(&public_key).unwrap();
let encrypted = api.encrypt_text_msg(text, &recipient_key);

// Send
match api.send(&to, &encrypted) {
    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 blob ID. Must contain exactly 16 lowercase hexadecimal characters.

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.

RecipientKey

The public key of a recipient.

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.