Crate threema_gateway [] [src]

Threema Gateway SDK for Rust

[![Travis CI][travis-ci-badge]][travis-ci] [![Crates.io][crates-io-badge]][crates-io] [![Rust][rust-badge]][github]

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

Documentation of the HTTP API can be found here: https://gateway.threema.ch/de/developer/api

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.

[travis-ci]: https://travis-ci.org/dbrgn/threema-gateway-rs [travis-ci-badge]: https://img.shields.io/travis/dbrgn/threema-gateway-rs.svg?maxAge=3600 [crates-io]: https://crates.io/crates/threema-gateway [crates-io-badge]: https://img.shields.io/crates/v/threema-gateway.svg?maxAge=3600 [github]: https://github.com/dbrgn/threema-gateway-rs [rust-badge]: https://img.shields.io/badge/rust-1.9%2B-blue.svg?maxAge=3600

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.