pub mod v3 {
use ruma_common::{
api::{auth_scheme::AccessToken, response},
metadata,
};
metadata! {
method: POST,
rate_limited: false,
authentication: AccessToken,
history: {
1.0 => "/_matrix/client/r0/logout",
1.1 => "/_matrix/client/v3/logout",
}
}
#[derive(Debug, Clone, Default)]
#[cfg_attr(not(ruma_unstable_exhaustive_types), non_exhaustive)]
pub struct Request {}
impl Request {
pub fn new() -> Self {
Self {}
}
}
#[cfg(feature = "client")]
impl ruma_common::api::OutgoingRequest for Request {
type EndpointError = crate::Error;
type IncomingResponse = Response;
fn try_into_http_request<T: Default + bytes::BufMut + AsRef<[u8]>>(
self,
base_url: &str,
access_token: ruma_common::api::auth_scheme::SendAccessToken<'_>,
considering: std::borrow::Cow<'_, ruma_common::api::SupportedVersions>,
) -> Result<http::Request<T>, ruma_common::api::error::IntoHttpError> {
use ruma_common::api::{Metadata, auth_scheme::AuthScheme};
let url = Self::make_endpoint_url(considering, base_url, &[], "")?;
let mut http_request =
http::Request::builder().method(Self::METHOD).uri(url).body(T::default())?;
Self::Authentication::add_authentication(&mut http_request, access_token).map_err(
|error| ruma_common::api::error::IntoHttpError::Authentication(error.into()),
)?;
Ok(http_request)
}
}
#[cfg(feature = "server")]
impl ruma_common::api::IncomingRequest for Request {
type EndpointError = crate::Error;
type OutgoingResponse = Response;
fn try_from_http_request<B, S>(
request: http::Request<B>,
_path_args: &[S],
) -> Result<Self, ruma_common::api::error::FromHttpRequestError>
where
B: AsRef<[u8]>,
S: AsRef<str>,
{
Self::check_request_method(request.method())?;
Ok(Self {})
}
}
#[response(error = crate::Error)]
#[derive(Default)]
pub struct Response {}
impl Response {
pub fn new() -> Self {
Self {}
}
}
}