matrix-sdk: Add a convenience method to get our own devices.
parent
217543ef38
commit
6c7dbb814b
|
@ -41,6 +41,7 @@ use matrix_sdk_base::{CryptoStoreError, OutgoingRequests, ToDeviceRequest};
|
||||||
use matrix_sdk_common::{
|
use matrix_sdk_common::{
|
||||||
api::r0::{
|
api::r0::{
|
||||||
account::register,
|
account::register,
|
||||||
|
device::get_devices,
|
||||||
directory::{get_public_rooms, get_public_rooms_filtered},
|
directory::{get_public_rooms, get_public_rooms_filtered},
|
||||||
membership::{
|
membership::{
|
||||||
ban_user, forget_room,
|
ban_user, forget_room,
|
||||||
|
@ -1111,6 +1112,35 @@ impl Client {
|
||||||
self.send(request).await
|
self.send(request).await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Get information of all our own devices.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```no_run
|
||||||
|
/// # use matrix_sdk::{Client, SyncSettings};
|
||||||
|
/// # use futures::executor::block_on;
|
||||||
|
/// # use url::Url;
|
||||||
|
/// # use std::convert::TryFrom;
|
||||||
|
/// # block_on(async {
|
||||||
|
/// # let homeserver = Url::parse("http://localhost:8080").unwrap();
|
||||||
|
/// # let mut client = Client::new(homeserver).unwrap();
|
||||||
|
/// let response = client.devices().await.expect("Can't get devices from server");
|
||||||
|
///
|
||||||
|
/// for device in response.devices {
|
||||||
|
/// println!(
|
||||||
|
/// "Device: {} {}",
|
||||||
|
/// device.device_id,
|
||||||
|
/// device.display_name.as_deref().unwrap_or("")
|
||||||
|
/// );
|
||||||
|
/// }
|
||||||
|
/// # });
|
||||||
|
/// ```
|
||||||
|
pub async fn devices(&self) -> Result<get_devices::Response> {
|
||||||
|
let request = get_devices::Request {};
|
||||||
|
|
||||||
|
self.send(request).await
|
||||||
|
}
|
||||||
|
|
||||||
/// Synchronize the client's state with the latest state on the server.
|
/// Synchronize the client's state with the latest state on the server.
|
||||||
///
|
///
|
||||||
/// If a `StateStore` is provided and this is the initial sync state will
|
/// If a `StateStore` is provided and this is the initial sync state will
|
||||||
|
@ -1548,6 +1578,18 @@ mod test {
|
||||||
assert!(logged_in, "Client should be logged in");
|
assert!(logged_in, "Client should be logged in");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn devices() {
|
||||||
|
let client = logged_in_client().await;
|
||||||
|
|
||||||
|
let _m = mock("GET", "/_matrix/client/r0/devices")
|
||||||
|
.with_status(200)
|
||||||
|
.with_body(test_json::DEVICES.to_string())
|
||||||
|
.create();
|
||||||
|
|
||||||
|
assert!(client.devices().await.is_ok());
|
||||||
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn test_join_leave_room() {
|
async fn test_join_leave_room() {
|
||||||
let homeserver = Url::from_str(&mockito::server_url()).unwrap();
|
let homeserver = Url::from_str(&mockito::server_url()).unwrap();
|
||||||
|
|
|
@ -4,6 +4,9 @@
|
||||||
//! When running `cargo publish` no external folders are allowed so all the
|
//! When running `cargo publish` no external folders are allowed so all the
|
||||||
//! test data needs to be contained within this crate.
|
//! test data needs to be contained within this crate.
|
||||||
|
|
||||||
|
use lazy_static::lazy_static;
|
||||||
|
use serde_json::{json, Value as JsonValue};
|
||||||
|
|
||||||
pub mod events;
|
pub mod events;
|
||||||
pub mod sync;
|
pub mod sync;
|
||||||
|
|
||||||
|
@ -14,3 +17,24 @@ pub use events::{
|
||||||
ROOM_ID, ROOM_MESSAGES, TYPING,
|
ROOM_ID, ROOM_MESSAGES, TYPING,
|
||||||
};
|
};
|
||||||
pub use sync::{DEFAULT_SYNC_SUMMARY, INVITE_SYNC, LEAVE_SYNC, LEAVE_SYNC_EVENT, MORE_SYNC, SYNC};
|
pub use sync::{DEFAULT_SYNC_SUMMARY, INVITE_SYNC, LEAVE_SYNC, LEAVE_SYNC_EVENT, MORE_SYNC, SYNC};
|
||||||
|
|
||||||
|
lazy_static! {
|
||||||
|
pub static ref DEVICES: JsonValue = json!({
|
||||||
|
"devices": [
|
||||||
|
{
|
||||||
|
"device_id": "BNYQQWUMXO",
|
||||||
|
"display_name": "Client 1",
|
||||||
|
"last_seen_ip": "-",
|
||||||
|
"last_seen_ts": 1596117733037u64,
|
||||||
|
"user_id": "@example:localhost"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"device_id": "LEBKSEUSNR",
|
||||||
|
"display_name": "Client 2",
|
||||||
|
"last_seen_ip": "-",
|
||||||
|
"last_seen_ts": 1599057006985u64,
|
||||||
|
"user_id": "@example:localhost"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue