federation-api: Add get_missing_events endpoint v1
This commit is contained in:
parent
a8b4bad684
commit
dd87484a92
@ -13,6 +13,7 @@ Improvements:
|
|||||||
backfill::get_backfill::v1,
|
backfill::get_backfill::v1,
|
||||||
device::get_devices::v1,
|
device::get_devices::v1,
|
||||||
directory::get_public_rooms_filtered::v1,
|
directory::get_public_rooms_filtered::v1,
|
||||||
|
event::get_missing_events::v1,
|
||||||
keys::{
|
keys::{
|
||||||
claim_keys::v1,
|
claim_keys::v1,
|
||||||
query_keys::v1,
|
query_keys::v1,
|
||||||
|
3
ruma-federation-api/src/event.rs
Normal file
3
ruma-federation-api/src/event.rs
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
//! Endpoints to get general information about events
|
||||||
|
|
||||||
|
pub mod get_missing_events;
|
3
ruma-federation-api/src/event/get_missing_events.rs
Normal file
3
ruma-federation-api/src/event/get_missing_events.rs
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
//! Retrieves previous events that the sender is missing.
|
||||||
|
|
||||||
|
pub mod v1;
|
75
ruma-federation-api/src/event/get_missing_events/v1.rs
Normal file
75
ruma-federation-api/src/event/get_missing_events/v1.rs
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
//! [POST /_matrix/federation/v1/get_missing_events/{roomId}](https://matrix.org/docs/spec/server_server/r0.1.4#post-matrix-federation-v1-get-missing-events-roomid)
|
||||||
|
|
||||||
|
use js_int::{uint, UInt};
|
||||||
|
use ruma_api::ruma_api;
|
||||||
|
use ruma_events::pdu::Pdu;
|
||||||
|
use ruma_identifiers::{EventId, RoomId};
|
||||||
|
|
||||||
|
ruma_api! {
|
||||||
|
metadata: {
|
||||||
|
description: "Retrieves previous events that the sender is missing.",
|
||||||
|
method: POST,
|
||||||
|
name: "get_missing_events",
|
||||||
|
path: "/_matrix/federation/v1/get_missing_events/:room_id",
|
||||||
|
rate_limited: false,
|
||||||
|
requires_authentication: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[non_exhaustive]
|
||||||
|
request: {
|
||||||
|
/// The room ID to search in.
|
||||||
|
#[ruma_api(path)]
|
||||||
|
room_id: &'a RoomId,
|
||||||
|
|
||||||
|
/// The maximum number of events to retrieve. Defaults to 10.
|
||||||
|
#[serde(default = "default_limit", skip_serializing_if = "is_default_limit")]
|
||||||
|
limit: UInt,
|
||||||
|
|
||||||
|
/// The minimum depth of events to retrieve. Defaults to 0.
|
||||||
|
#[serde(default, skip_serializing_if = "ruma_serde::is_default")]
|
||||||
|
min_depth: UInt,
|
||||||
|
|
||||||
|
/// The latest event IDs that the sender already has. These are skipped when retrieving the previous events of `latest_events`.
|
||||||
|
earliest_events: &'a [EventId],
|
||||||
|
|
||||||
|
/// The event IDs to retrieve the previous events for.
|
||||||
|
latest_events: &'a [EventId],
|
||||||
|
}
|
||||||
|
|
||||||
|
response: {
|
||||||
|
/// The missing events.
|
||||||
|
events: Vec<Pdu>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> Request<'a> {
|
||||||
|
/// Creates a new `Request` for events in the given room with the given constraints.
|
||||||
|
pub fn new(
|
||||||
|
room_id: &'a RoomId,
|
||||||
|
earliest_events: &'a [EventId],
|
||||||
|
latest_events: &'a [EventId],
|
||||||
|
) -> Self {
|
||||||
|
Self {
|
||||||
|
room_id,
|
||||||
|
limit: default_limit(),
|
||||||
|
min_depth: UInt::default(),
|
||||||
|
earliest_events,
|
||||||
|
latest_events,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Response {
|
||||||
|
/// Creates a new `Response` with the given events.
|
||||||
|
pub fn new(events: Vec<Pdu>) -> Self {
|
||||||
|
Self { events }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn default_limit() -> UInt {
|
||||||
|
uint!(10)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn is_default_limit(val: &UInt) -> bool {
|
||||||
|
*val == default_limit()
|
||||||
|
}
|
@ -9,6 +9,7 @@ pub mod backfill;
|
|||||||
pub mod device;
|
pub mod device;
|
||||||
pub mod directory;
|
pub mod directory;
|
||||||
pub mod discovery;
|
pub mod discovery;
|
||||||
|
pub mod event;
|
||||||
pub mod keys;
|
pub mod keys;
|
||||||
pub mod membership;
|
pub mod membership;
|
||||||
pub mod openid;
|
pub mod openid;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user