From d749f7ebc118d68abc5a6a30813a420a1d9e0294 Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Mon, 23 Dec 2019 22:46:42 -0500 Subject: [PATCH 1/6] Add delete_devices endpoint. --- CHANGELOG.md | 1 + src/r0.rs | 1 + src/r0/device.rs | 3 +++ src/r0/device/delete_devices.rs | 26 ++++++++++++++++++++++++++ 4 files changed, 31 insertions(+) create mode 100644 src/r0/device.rs create mode 100644 src/r0/device/delete_devices.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index 4748c444..67b38a61 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,3 +19,4 @@ Improvements: * Add `contains_url` to `r0::filter::RoomEventFilter` (introduced upstream in r0.3.0) * Update `r0::account::change_password` from r0.3.0 to r0.6.0 * Add optional `auth` field +* Add `r0::device::delete_devices` (introduced upstream in r0.4.0) diff --git a/src/r0.rs b/src/r0.rs index 2bd7ab9d..1a57c5f9 100644 --- a/src/r0.rs +++ b/src/r0.rs @@ -6,6 +6,7 @@ pub mod appservice; pub mod config; pub mod contact; pub mod context; +pub mod device; pub mod directory; pub mod filter; pub mod media; diff --git a/src/r0/device.rs b/src/r0/device.rs new file mode 100644 index 00000000..e15727b9 --- /dev/null +++ b/src/r0/device.rs @@ -0,0 +1,3 @@ +//! Endpoints for managing devices. + +pub mod delete_devices; diff --git a/src/r0/device/delete_devices.rs b/src/r0/device/delete_devices.rs new file mode 100644 index 00000000..6f8795e9 --- /dev/null +++ b/src/r0/device/delete_devices.rs @@ -0,0 +1,26 @@ +//! [POST /_matrix/client/r0/delete_devices](https://matrix.org/docs/spec/client_server/r0.6.0#post-matrix-client-r0-delete-devices) + +use crate::r0::account::AuthenticationData; +use ruma_api::ruma_api; + +ruma_api! { + metadata { + description: "Delete specified devices", + method: POST, + path: "/_matrix/client/r0/delete_devices", + name: "delete_devices", + rate_limited: false, + requires_authentication: true, + } + + request { + /// List of devices to delete. + devices: Vec, + + /// Additional authentication information for the user-interactive authentication API. + #[serde(skip_serializing_if = "Option::is_none")] + auth: Option, + } + + response { } +} From 523e58a8015d3af5846e6d539706684112e574a0 Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Tue, 24 Dec 2019 00:03:47 -0500 Subject: [PATCH 2/6] Add device endpoints. --- CHANGELOG.md | 2 +- src/r0/device.rs | 23 ++++++++++++++++- ...lete_devices.rs => bulk_delete_devices.rs} | 4 +-- src/r0/device/delete_device.rs | 25 +++++++++++++++++++ src/r0/device/get_device.rs | 25 +++++++++++++++++++ src/r0/device/get_devices.rs | 21 ++++++++++++++++ src/r0/device/set_device.rs | 24 ++++++++++++++++++ 7 files changed, 120 insertions(+), 4 deletions(-) rename src/r0/device/{delete_devices.rs => bulk_delete_devices.rs} (88%) create mode 100644 src/r0/device/delete_device.rs create mode 100644 src/r0/device/get_device.rs create mode 100644 src/r0/device/get_devices.rs create mode 100644 src/r0/device/set_device.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index 67b38a61..aa76aac7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,4 +19,4 @@ Improvements: * Add `contains_url` to `r0::filter::RoomEventFilter` (introduced upstream in r0.3.0) * Update `r0::account::change_password` from r0.3.0 to r0.6.0 * Add optional `auth` field -* Add `r0::device::delete_devices` (introduced upstream in r0.4.0) +* Add `r0::device` endpoint diff --git a/src/r0/device.rs b/src/r0/device.rs index e15727b9..a2eae059 100644 --- a/src/r0/device.rs +++ b/src/r0/device.rs @@ -1,3 +1,24 @@ //! Endpoints for managing devices. -pub mod delete_devices; +use ruma_identifiers::DeviceId; +use js_int::UInt; +use serde::{Deserialize, Serialize}; + +pub mod bulk_delete_devices; +pub mod get_device; +pub mod get_devices; +pub mod set_device; +pub mod delete_device; + +/// Information about a registered device. +#[derive(Clone, Debug, Deserialize, Hash, PartialEq, Serialize)] +pub struct Device { + /// Device ID + pub device_id: DeviceId, + /// Public display name of the device. + pub display_name: Option, + /// Most recently seen IP address of the session. + pub ip: Option, + /// Unix timestamp that the session was last active. + pub last_seen: Option, +} diff --git a/src/r0/device/delete_devices.rs b/src/r0/device/bulk_delete_devices.rs similarity index 88% rename from src/r0/device/delete_devices.rs rename to src/r0/device/bulk_delete_devices.rs index 6f8795e9..d4e76962 100644 --- a/src/r0/device/delete_devices.rs +++ b/src/r0/device/bulk_delete_devices.rs @@ -5,10 +5,10 @@ use ruma_api::ruma_api; ruma_api! { metadata { - description: "Delete specified devices", + description: "Delete specified devices.", method: POST, path: "/_matrix/client/r0/delete_devices", - name: "delete_devices", + name: "bulk_delete_devices", rate_limited: false, requires_authentication: true, } diff --git a/src/r0/device/delete_device.rs b/src/r0/device/delete_device.rs new file mode 100644 index 00000000..cefb61c9 --- /dev/null +++ b/src/r0/device/delete_device.rs @@ -0,0 +1,25 @@ +//! [DELETE /_matrix/client/r0/devices/{deviceId}](https://matrix.org/docs/spec/client_server/r0.6.0#delete-matrix-client-r0-devices-deviceid) + +use ruma_api::ruma_api; +use ruma_identifiers::DeviceId; +use crate::r0::account::AuthenticationData; + +ruma_api! { + metadata { + description: "Delete a device for authenticated user.", + method: DELETE, + name: "delete_device", + path: "/_matrix/client/r0/devices/:device_id", + rate_limited: false, + requires_authentication: true, + } + + request { + #[ruma_api(path)] + device_id: DeviceId, + #[serde(skip_serializing_if = "Option::is_none")] + auth: Option, + } + + response {} +} \ No newline at end of file diff --git a/src/r0/device/get_device.rs b/src/r0/device/get_device.rs new file mode 100644 index 00000000..43f6dc55 --- /dev/null +++ b/src/r0/device/get_device.rs @@ -0,0 +1,25 @@ +//! [GET /_matrix/client/r0/devices/{deviceId}](https://matrix.org/docs/spec/client_server/r0.6.0#get-matrix-client-r0-devices-deviceid) + +use ruma_api::ruma_api; +use ruma_identifiers::DeviceId; +use super::Device; + +ruma_api! { + metadata { + description: "Get a device for authenticated user.", + method: GET, + name: "get_device", + path: "/_matrix/client/r0/devices/:device_id", + rate_limited: false, + requires_authentication: true, + } + + request { + #[ruma_api(path)] + device_id: DeviceId, + } + + response { + device: Device, + } +} diff --git a/src/r0/device/get_devices.rs b/src/r0/device/get_devices.rs new file mode 100644 index 00000000..20746c85 --- /dev/null +++ b/src/r0/device/get_devices.rs @@ -0,0 +1,21 @@ +//! [GET /_matrix/client/r0/devices](https://matrix.org/docs/spec/client_server/r0.6.0#get-matrix-client-r0-devices) + +use ruma_api::ruma_api; +use super::Device; + +ruma_api! { + metadata { + description: "Get registered devices for authenticated user.", + method: GET, + name: "get_devices", + path: "/_matrix/client/r0/devices", + rate_limited: false, + requires_authentication: true, + } + + request {} + + response { + devices: Vec + } +} diff --git a/src/r0/device/set_device.rs b/src/r0/device/set_device.rs new file mode 100644 index 00000000..0d653e16 --- /dev/null +++ b/src/r0/device/set_device.rs @@ -0,0 +1,24 @@ +//! [PUT /_matrix/client/r0/devices/{deviceId}](https://matrix.org/docs/spec/client_server/r0.6.0#put-matrix-client-r0-devices-deviceid) + +use ruma_api::ruma_api; +use ruma_identifiers::DeviceId; + +ruma_api! { + metadata { + description: "Update metadata for a device.", + method: PUT, + name: "set_device", + path: "/_matrix/client/r0/devices/:device_id", + rate_limited: false, + requires_authentication: true, + } + + request { + #[ruma_api(path)] + device_id: DeviceId, + #[serde(skip_serializing_if = "Option::is_none")] + display_name: Option, + } + + response {} +} \ No newline at end of file From f6bc55bd39f7f6a3c63fe198b0f3031c8a6c9bf9 Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Tue, 24 Dec 2019 00:09:03 -0500 Subject: [PATCH 3/6] Use DeviceId instead of String. --- src/r0/device/bulk_delete_devices.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/r0/device/bulk_delete_devices.rs b/src/r0/device/bulk_delete_devices.rs index d4e76962..1d849142 100644 --- a/src/r0/device/bulk_delete_devices.rs +++ b/src/r0/device/bulk_delete_devices.rs @@ -2,6 +2,7 @@ use crate::r0::account::AuthenticationData; use ruma_api::ruma_api; +use ruma_identifiers::DeviceId; ruma_api! { metadata { @@ -15,7 +16,7 @@ ruma_api! { request { /// List of devices to delete. - devices: Vec, + devices: Vec, /// Additional authentication information for the user-interactive authentication API. #[serde(skip_serializing_if = "Option::is_none")] From f58f4c073b85a2bd78283ed1d882eb3dd0694fa4 Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Tue, 24 Dec 2019 00:10:58 -0500 Subject: [PATCH 4/6] Formatting fixes. --- src/r0/device.rs | 4 ++-- src/r0/device/delete_device.rs | 4 ++-- src/r0/device/get_device.rs | 2 +- src/r0/device/get_devices.rs | 2 +- src/r0/device/set_device.rs | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/r0/device.rs b/src/r0/device.rs index a2eae059..09164d45 100644 --- a/src/r0/device.rs +++ b/src/r0/device.rs @@ -1,14 +1,14 @@ //! Endpoints for managing devices. -use ruma_identifiers::DeviceId; use js_int::UInt; +use ruma_identifiers::DeviceId; use serde::{Deserialize, Serialize}; pub mod bulk_delete_devices; +pub mod delete_device; pub mod get_device; pub mod get_devices; pub mod set_device; -pub mod delete_device; /// Information about a registered device. #[derive(Clone, Debug, Deserialize, Hash, PartialEq, Serialize)] diff --git a/src/r0/device/delete_device.rs b/src/r0/device/delete_device.rs index cefb61c9..bea045e4 100644 --- a/src/r0/device/delete_device.rs +++ b/src/r0/device/delete_device.rs @@ -1,8 +1,8 @@ //! [DELETE /_matrix/client/r0/devices/{deviceId}](https://matrix.org/docs/spec/client_server/r0.6.0#delete-matrix-client-r0-devices-deviceid) +use crate::r0::account::AuthenticationData; use ruma_api::ruma_api; use ruma_identifiers::DeviceId; -use crate::r0::account::AuthenticationData; ruma_api! { metadata { @@ -22,4 +22,4 @@ ruma_api! { } response {} -} \ No newline at end of file +} diff --git a/src/r0/device/get_device.rs b/src/r0/device/get_device.rs index 43f6dc55..8f064083 100644 --- a/src/r0/device/get_device.rs +++ b/src/r0/device/get_device.rs @@ -1,8 +1,8 @@ //! [GET /_matrix/client/r0/devices/{deviceId}](https://matrix.org/docs/spec/client_server/r0.6.0#get-matrix-client-r0-devices-deviceid) +use super::Device; use ruma_api::ruma_api; use ruma_identifiers::DeviceId; -use super::Device; ruma_api! { metadata { diff --git a/src/r0/device/get_devices.rs b/src/r0/device/get_devices.rs index 20746c85..57bb9510 100644 --- a/src/r0/device/get_devices.rs +++ b/src/r0/device/get_devices.rs @@ -1,7 +1,7 @@ //! [GET /_matrix/client/r0/devices](https://matrix.org/docs/spec/client_server/r0.6.0#get-matrix-client-r0-devices) -use ruma_api::ruma_api; use super::Device; +use ruma_api::ruma_api; ruma_api! { metadata { diff --git a/src/r0/device/set_device.rs b/src/r0/device/set_device.rs index 0d653e16..e6a304c3 100644 --- a/src/r0/device/set_device.rs +++ b/src/r0/device/set_device.rs @@ -21,4 +21,4 @@ ruma_api! { } response {} -} \ No newline at end of file +} From d025c3e26e14bd0d67a1661285d467cdb9477774 Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Tue, 24 Dec 2019 10:12:45 -0500 Subject: [PATCH 5/6] Make style and naming convention for devices endpoint consistent. --- CHANGELOG.md | 2 +- src/r0/device.rs | 4 ++-- src/r0/device/{bulk_delete_devices.rs => delete_devices.rs} | 4 ++-- src/r0/device/get_devices.rs | 2 +- src/r0/device/{set_device.rs => update_device.rs} | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) rename src/r0/device/{bulk_delete_devices.rs => delete_devices.rs} (93%) rename src/r0/device/{set_device.rs => update_device.rs} (95%) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa76aac7..190392f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,4 +19,4 @@ Improvements: * Add `contains_url` to `r0::filter::RoomEventFilter` (introduced upstream in r0.3.0) * Update `r0::account::change_password` from r0.3.0 to r0.6.0 * Add optional `auth` field -* Add `r0::device` endpoint +* Add `r0::device` endpoints diff --git a/src/r0/device.rs b/src/r0/device.rs index 09164d45..11c27344 100644 --- a/src/r0/device.rs +++ b/src/r0/device.rs @@ -4,11 +4,11 @@ use js_int::UInt; use ruma_identifiers::DeviceId; use serde::{Deserialize, Serialize}; -pub mod bulk_delete_devices; pub mod delete_device; +pub mod delete_devices; pub mod get_device; pub mod get_devices; -pub mod set_device; +pub mod update_device; /// Information about a registered device. #[derive(Clone, Debug, Deserialize, Hash, PartialEq, Serialize)] diff --git a/src/r0/device/bulk_delete_devices.rs b/src/r0/device/delete_devices.rs similarity index 93% rename from src/r0/device/bulk_delete_devices.rs rename to src/r0/device/delete_devices.rs index 1d849142..2adf8ea5 100644 --- a/src/r0/device/bulk_delete_devices.rs +++ b/src/r0/device/delete_devices.rs @@ -9,7 +9,7 @@ ruma_api! { description: "Delete specified devices.", method: POST, path: "/_matrix/client/r0/delete_devices", - name: "bulk_delete_devices", + name: "delete_devices", rate_limited: false, requires_authentication: true, } @@ -23,5 +23,5 @@ ruma_api! { auth: Option, } - response { } + response {} } diff --git a/src/r0/device/get_devices.rs b/src/r0/device/get_devices.rs index 57bb9510..4419d369 100644 --- a/src/r0/device/get_devices.rs +++ b/src/r0/device/get_devices.rs @@ -16,6 +16,6 @@ ruma_api! { request {} response { - devices: Vec + devices: Vec, } } diff --git a/src/r0/device/set_device.rs b/src/r0/device/update_device.rs similarity index 95% rename from src/r0/device/set_device.rs rename to src/r0/device/update_device.rs index e6a304c3..2d3db701 100644 --- a/src/r0/device/set_device.rs +++ b/src/r0/device/update_device.rs @@ -7,7 +7,7 @@ ruma_api! { metadata { description: "Update metadata for a device.", method: PUT, - name: "set_device", + name: "update_device", path: "/_matrix/client/r0/devices/:device_id", rate_limited: false, requires_authentication: true, From 16a8aa70d67f5c9856765e0452e5056e99969e97 Mon Sep 17 00:00:00 2001 From: Isaiah Inuwa Date: Tue, 24 Dec 2019 10:15:56 -0500 Subject: [PATCH 6/6] Use DeviceId identifier consistently. --- src/r0/account/register.rs | 6 +++--- src/r0/session/login.rs | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/r0/account/register.rs b/src/r0/account/register.rs index 7c06297b..3ab0a9c5 100644 --- a/src/r0/account/register.rs +++ b/src/r0/account/register.rs @@ -1,7 +1,7 @@ //! [POST /_matrix/client/r0/register](https://matrix.org/docs/spec/client_server/r0.4.0.html#post-matrix-client-r0-register) use ruma_api::ruma_api; -use ruma_identifiers::UserId; +use ruma_identifiers::{DeviceId, UserId}; use serde::{Deserialize, Serialize}; use super::AuthenticationData; @@ -37,7 +37,7 @@ ruma_api! { /// If this does not correspond to a known client device, a new device will be created. /// The server will auto-generate a device_id if this is not specified. #[serde(skip_serializing_if = "Option::is_none")] - pub device_id: Option, + pub device_id: Option, /// A display name to assign to the newly-created device. /// /// Ignored if `device_id` corresponds to a known device. @@ -71,7 +71,7 @@ ruma_api! { /// ID of the registered device. /// /// Will be the same as the corresponding parameter in the request, if one was specified. - pub device_id: String, + pub device_id: DeviceId, } } diff --git a/src/r0/session/login.rs b/src/r0/session/login.rs index 720ad1a5..01dea6ed 100644 --- a/src/r0/session/login.rs +++ b/src/r0/session/login.rs @@ -1,7 +1,7 @@ //! [POST /_matrix/client/r0/login](https://matrix.org/docs/spec/client_server/r0.4.0.html#post-matrix-client-r0-login) use ruma_api::ruma_api; -use ruma_identifiers::UserId; +use ruma_identifiers::{DeviceId, UserId}; use serde::{Deserialize, Serialize}; ruma_api! { @@ -30,7 +30,7 @@ ruma_api! { pub address: Option, /// ID of the client device #[serde(skip_serializing_if = "Option::is_none")] - pub device_id: Option, + pub device_id: Option, } response {