use ruma_common::{
OwnedDeviceId,
api::{auth_scheme::NoAccessToken, request},
metadata,
};
metadata! {
method: GET,
rate_limited: false,
authentication: NoAccessToken,
path: "/_matrix/static/client/login/",
}
#[request]
#[derive(Default)]
pub struct Request {
#[ruma_api(query)]
#[serde(skip_serializing_if = "Option::is_none")]
pub device_id: Option<OwnedDeviceId>,
#[ruma_api(query)]
#[serde(skip_serializing_if = "Option::is_none")]
pub initial_device_display_name: Option<String>,
}
impl Request {
pub fn new(
device_id: Option<OwnedDeviceId>,
initial_device_display_name: Option<String>,
) -> Self {
Self { device_id, initial_device_display_name }
}
}
#[derive(Debug, Clone)]
#[cfg_attr(not(ruma_unstable_exhaustive_types), non_exhaustive)]
pub struct Response {
pub body: Vec<u8>,
}
impl Response {
pub fn new(body: Vec<u8>) -> Self {
Self { body }
}
}
#[cfg(feature = "server")]
impl ruma_common::api::OutgoingResponse for Response {
type Body = ruma_common::api::BytesBody;
fn try_into_http_response_inner(
self,
) -> Result<http::Response<Self::Body>, ruma_common::api::error::IntoHttpError> {
Ok(http::Response::builder()
.status(http::StatusCode::OK)
.header(http::header::CONTENT_TYPE, ruma_common::http_headers::TEXT_HTML_UTF8)
.body(ruma_common::api::BytesBody(self.body))?)
}
}
#[cfg(feature = "client")]
impl ruma_common::api::IncomingResponse for Response {
type EndpointError = ruma_common::api::error::Error;
fn try_from_http_response_inner(
response: http::Response<&[u8]>,
) -> Result<Self, ruma_common::api::error::DeserializationError> {
let body = response.into_body().to_owned();
Ok(Self { body })
}
}