1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//! MQTT message publishing.
//!
//! To receive MQTT messages, use the MQTT trigger.
//!
//! # Examples
//!
//! Send an MQTT message.
//!
//! ```no_run
//! use spin_sdk::mqtt::{Connection, Qos};
//!
//! # fn ensure_pet_picture(_: &[u8]) -> anyhow::Result<()> { Ok(()) }
//! # fn use_mqtt(request: spin_sdk::http::Request) -> anyhow::Result<()> {
//! let user = spin_sdk::variables::get("mqtt_username")?;
//! let password = spin_sdk::variables::get("mqtt_password")?;
//!
//! let conn = Connection::open(
//! "mqtt://localhost:1883?client_id=123",
//! &user,
//! &password,
//! 30 /* seconds */
//! )?;
//!
//! let payload = request.body().to_vec();
//! ensure_pet_picture(&payload)?;
//!
//! conn.publish("pet-pictures", &payload, Qos::AtLeastOnce)?;
//! # Ok(())
//! # }
//! ```
/// An open connection to an MQTT queue.
///
/// The address must be in URL form, and must include a `client_id`:
/// `mqtt://hostname?client_id=...`
///
/// # Examples
///
/// Send an MQTT message.
///
/// ```no_run
/// use spin_sdk::mqtt::{Connection, Qos};
///
/// # fn ensure_pet_picture(_: &[u8]) -> anyhow::Result<()> { Ok(()) }
/// # fn use_mqtt(request: spin_sdk::http::Request) -> anyhow::Result<()> {
/// let user = spin_sdk::variables::get("mqtt_username")?;
/// let password = spin_sdk::variables::get("mqtt_password")?;
///
/// let conn = Connection::open(
/// "mqtt://localhost:1883?client_id=123",
/// &user,
/// &password,
/// 30 /* seconds */
/// )?;
///
/// let payload = request.body().to_vec();
/// ensure_pet_picture(&payload)?;
///
/// conn.publish("pet-pictures", &payload, Qos::AtLeastOnce)?;
/// # Ok(())
/// # }
/// ```
pub use Connection;
pub use ;