Merge remote-tracking branch 'upstream/main' into conduwuit-changes
This commit is contained in:
commit
b36cacb4d1
@ -11,6 +11,8 @@ Breaking changes:
|
|||||||
the `conditions` field is optional.
|
the `conditions` field is optional.
|
||||||
- `MissingConditionsError` was removed.
|
- `MissingConditionsError` was removed.
|
||||||
- The `ts` field in `Request` for `get_media_preview` is now `Option`.
|
- The `ts` field in `Request` for `get_media_preview` is now `Option`.
|
||||||
|
- The query parameter of `check_registration_token_validity` endpoint
|
||||||
|
has been renamed from `registration_token` to `token`
|
||||||
|
|
||||||
Improvements:
|
Improvements:
|
||||||
|
|
||||||
@ -29,6 +31,8 @@ Improvements:
|
|||||||
according to MSC4025.
|
according to MSC4025.
|
||||||
- Allow `discovery::get_supported_versions::v1` to optionally accept
|
- Allow `discovery::get_supported_versions::v1` to optionally accept
|
||||||
authentication, according to MSC4026.
|
authentication, according to MSC4026.
|
||||||
|
- Allow `account::register::v3` and `account::login::v3` to accept
|
||||||
|
authentication for appservices.
|
||||||
|
|
||||||
# 0.17.4
|
# 0.17.4
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ pub mod v1 {
|
|||||||
pub struct Request {
|
pub struct Request {
|
||||||
/// The registration token to check the validity of.
|
/// The registration token to check the validity of.
|
||||||
#[ruma_api(query)]
|
#[ruma_api(query)]
|
||||||
pub registration_token: String,
|
pub token: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Response type for the `check_registration_token_validity` endpoint.
|
/// Response type for the `check_registration_token_validity` endpoint.
|
||||||
@ -39,8 +39,8 @@ pub mod v1 {
|
|||||||
|
|
||||||
impl Request {
|
impl Request {
|
||||||
/// Creates a new `Request` with the given registration token.
|
/// Creates a new `Request` with the given registration token.
|
||||||
pub fn new(registration_token: String) -> Self {
|
pub fn new(token: String) -> Self {
|
||||||
Self { registration_token }
|
Self { token }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ pub mod v3 {
|
|||||||
const METADATA: Metadata = metadata! {
|
const METADATA: Metadata = metadata! {
|
||||||
method: POST,
|
method: POST,
|
||||||
rate_limited: true,
|
rate_limited: true,
|
||||||
authentication: None,
|
authentication: AppserviceToken,
|
||||||
history: {
|
history: {
|
||||||
1.0 => "/_matrix/client/r0/register",
|
1.0 => "/_matrix/client/r0/register",
|
||||||
1.1 => "/_matrix/client/v3/register",
|
1.1 => "/_matrix/client/v3/register",
|
||||||
|
@ -26,7 +26,7 @@ pub mod v3 {
|
|||||||
const METADATA: Metadata = metadata! {
|
const METADATA: Metadata = metadata! {
|
||||||
method: POST,
|
method: POST,
|
||||||
rate_limited: true,
|
rate_limited: true,
|
||||||
authentication: None,
|
authentication: AppserviceToken,
|
||||||
history: {
|
history: {
|
||||||
1.0 => "/_matrix/client/r0/login",
|
1.0 => "/_matrix/client/r0/login",
|
||||||
1.1 => "/_matrix/client/v3/login",
|
1.1 => "/_matrix/client/v3/login",
|
||||||
|
@ -10,6 +10,7 @@ Breaking changes:
|
|||||||
match the `.m.rule.invite_for_me` push rule because usually the `invite_state` doesn't include
|
match the `.m.rule.invite_for_me` push rule because usually the `invite_state` doesn't include
|
||||||
`m.room.power_levels`.
|
`m.room.power_levels`.
|
||||||
- Add support for endpoints that take an optional authentication
|
- Add support for endpoints that take an optional authentication
|
||||||
|
- Add support for endpoints that require authentication for appservices
|
||||||
|
|
||||||
Improvements:
|
Improvements:
|
||||||
|
|
||||||
|
@ -318,6 +318,10 @@ pub enum SendAccessToken<'a> {
|
|||||||
/// Always add the access token.
|
/// Always add the access token.
|
||||||
Always(&'a str),
|
Always(&'a str),
|
||||||
|
|
||||||
|
/// Add the given appservice token to the request only if the `METADATA` on the request
|
||||||
|
/// requires it.
|
||||||
|
Appservice(&'a str),
|
||||||
|
|
||||||
/// Don't add an access token.
|
/// Don't add an access token.
|
||||||
///
|
///
|
||||||
/// This will lead to an error if the request endpoint requires authentication
|
/// This will lead to an error if the request endpoint requires authentication
|
||||||
@ -329,7 +333,7 @@ impl<'a> SendAccessToken<'a> {
|
|||||||
///
|
///
|
||||||
/// Returns `Some(_)` if `self` contains an access token.
|
/// Returns `Some(_)` if `self` contains an access token.
|
||||||
pub fn get_required_for_endpoint(self) -> Option<&'a str> {
|
pub fn get_required_for_endpoint(self) -> Option<&'a str> {
|
||||||
as_variant!(self, Self::IfRequired | Self::Always)
|
as_variant!(self, Self::IfRequired | Self::Appservice | Self::Always)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get the access token for an endpoint that should not require one.
|
/// Get the access token for an endpoint that should not require one.
|
||||||
@ -338,6 +342,14 @@ impl<'a> SendAccessToken<'a> {
|
|||||||
pub fn get_not_required_for_endpoint(self) -> Option<&'a str> {
|
pub fn get_not_required_for_endpoint(self) -> Option<&'a str> {
|
||||||
as_variant!(self, Self::Always)
|
as_variant!(self, Self::Always)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the access token for an endpoint that requires one for appservices.
|
||||||
|
///
|
||||||
|
/// Returns `Some(_)` if `self` is either `SendAccessToken::Appservice(_)`
|
||||||
|
/// or `SendAccessToken::Always(_)`
|
||||||
|
pub fn get_required_for_appservice(self) -> Option<&'a str> {
|
||||||
|
as_variant!(self, Self::Appservice | Self::Always)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A request type for a Matrix API endpoint, used for sending requests.
|
/// A request type for a Matrix API endpoint, used for sending requests.
|
||||||
@ -490,6 +502,12 @@ pub enum AuthScheme {
|
|||||||
/// It is recommended to use the header over the query parameter.
|
/// It is recommended to use the header over the query parameter.
|
||||||
AccessTokenOptional,
|
AccessTokenOptional,
|
||||||
|
|
||||||
|
/// Authentication is only performed for appservices, by including an access token in the
|
||||||
|
/// `Authentication` http header, or an `access_token` query parameter.
|
||||||
|
///
|
||||||
|
/// It is recommended to use the header over the query parameter.
|
||||||
|
AppserviceToken,
|
||||||
|
|
||||||
/// Authentication is performed by including X-Matrix signatures in the request headers,
|
/// Authentication is performed by including X-Matrix signatures in the request headers,
|
||||||
/// as defined in the federation API.
|
/// as defined in the federation API.
|
||||||
ServerSignatures,
|
ServerSignatures,
|
||||||
|
@ -79,6 +79,11 @@ impl Metadata {
|
|||||||
None => None,
|
None => None,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
AuthScheme::AppserviceToken => match access_token.get_required_for_appservice() {
|
||||||
|
Some(token) => Some((header::AUTHORIZATION, format!("Bearer {token}").try_into()?)),
|
||||||
|
None => None,
|
||||||
|
},
|
||||||
|
|
||||||
AuthScheme::ServerSignatures => None,
|
AuthScheme::ServerSignatures => None,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user