appservice-api: Add support for the appservice ping mechanism

According to MSC2659
This commit is contained in:
Kévin Commaille 2023-05-24 21:17:18 +02:00 committed by Kévin Commaille
parent 915da3c983
commit 7239be4fcb
4 changed files with 61 additions and 0 deletions

View File

@ -1,5 +1,9 @@
# [unreleased]
Improvements:
- Add support for the appservice ping mechanism (MSC 2659 / Matrix 1.7)
# 0.8.1
Improvements:

View File

@ -10,6 +10,7 @@
use serde::{Deserialize, Serialize};
pub mod event;
pub mod ping;
pub mod query;
pub mod thirdparty;

View File

@ -0,0 +1,3 @@
//! Endpoint for pinging the application service.
pub mod send_ping;

View File

@ -0,0 +1,53 @@
//! `PUT /_matrix/app/*/ping`
//!
//! Endpoint to ping the application service.
pub mod v1 {
//! `/v1/` ([spec])
//!
//! [spec]: https://spec.matrix.org/latest/application-service-api/#post_matrixappv1ping
use ruma_common::{
api::{request, response, Metadata},
metadata, OwnedTransactionId,
};
const METADATA: Metadata = metadata! {
method: POST,
rate_limited: false,
authentication: AccessToken,
history: {
unstable => "/_matrix/app/unstable/fi.mau.msc2659/ping",
1.7 => "/_matrix/app/v1/ping",
}
};
/// Request type for the `send_ping` endpoint.
#[request]
#[derive(Default)]
pub struct Request {
/// A transaction ID for the ping, copied directly from the `POST
/// /_matrix/client/v1/appservice/{appserviceId}/ping` call.
#[serde(skip_serializing_if = "Option::is_none")]
pub transaction_id: Option<OwnedTransactionId>,
}
/// Response type for the `send_ping` endpoint.
#[response]
#[derive(Default)]
pub struct Response {}
impl Request {
/// Creates a new empty `Request`.
pub fn new() -> Self {
Self::default()
}
}
impl Response {
/// Creates a new empty `Response`.
pub fn new() -> Self {
Self::default()
}
}
}