Skip to content
Snippets Groups Projects
capabilities.rs 1.05 KiB
Newer Older
  • Learn to ignore specific revisions
  • Timo Kösters's avatar
    Timo Kösters committed
    use crate::{services, Result, Ruma};
    
    Nyaaori's avatar
    Nyaaori committed
    use ruma::api::client::discovery::get_capabilities::{
        self, Capabilities, RoomVersionStability, RoomVersionsCapability,
    
    use std::collections::BTreeMap;
    
    
    /// # `GET /_matrix/client/r0/capabilities`
    ///
    
    /// Get information on the supported feature set and other relevent capabilities of this server.
    
    pub async fn get_capabilities_route(
    
    Jonas Platte's avatar
    Jonas Platte committed
        _body: Ruma<get_capabilities::v3::Request>,
    
    Jonathan de Jong's avatar
    Jonathan de Jong committed
    ) -> Result<get_capabilities::v3::Response> {
    
        let mut available = BTreeMap::new();
    
        for room_version in &services().globals.unstable_room_versions {
            available.insert(room_version.clone(), RoomVersionStability::Unstable);
    
        for room_version in &services().globals.stable_room_versions {
    
            available.insert(room_version.clone(), RoomVersionStability::Stable);
        }
    
        let mut capabilities = Capabilities::new();
        capabilities.room_versions = RoomVersionsCapability {
    
            default: services().globals.default_room_version(),
    
    Jonathan de Jong's avatar
    Jonathan de Jong committed
        Ok(get_capabilities::v3::Response { capabilities })