Crate threema_gateway [−] [src]
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 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.
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. |