fix: ensure ratelimiter adjusts for version prefix
This commit is contained in:
@@ -231,10 +231,15 @@ fn custom_openapi_spec() -> OpenApi {
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
Server {
|
Server {
|
||||||
url: "http://local.revolt.chat:8000".to_owned(),
|
url: "http://local.revolt.chat:14702".to_owned(),
|
||||||
description: Some("Local Revolt Environment".to_owned()),
|
description: Some("Local Revolt Environment".to_owned()),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
|
Server {
|
||||||
|
url: "http://local.revolt.chat:14702/0.8".to_owned(),
|
||||||
|
description: Some("Local Revolt Environment (v0.8)".to_owned()),
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
],
|
],
|
||||||
external_docs: Some(ExternalDocs {
|
external_docs: Some(ExternalDocs {
|
||||||
url: "https://developers.revolt.chat".to_owned(),
|
url: "https://developers.revolt.chat".to_owned(),
|
||||||
|
|||||||
@@ -94,14 +94,28 @@ pub struct Ratelimiter {
|
|||||||
///
|
///
|
||||||
/// Optionally, include a resource id to hash against.
|
/// Optionally, include a resource id to hash against.
|
||||||
fn resolve_bucket<'r>(request: &'r rocket::Request<'_>) -> (&'r str, Option<&'r str>) {
|
fn resolve_bucket<'r>(request: &'r rocket::Request<'_>) -> (&'r str, Option<&'r str>) {
|
||||||
if let Some(segment) = request.routed_segment(0) {
|
let (segment, resource, extra) = if matches!(request.routed_segment(0), Some("0.8")) {
|
||||||
let resource = request.routed_segment(1);
|
(
|
||||||
|
request.routed_segment(1),
|
||||||
|
request.routed_segment(2),
|
||||||
|
request.routed_segment(3),
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
(
|
||||||
|
request.routed_segment(0),
|
||||||
|
request.routed_segment(1),
|
||||||
|
request.routed_segment(2),
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
if let Some(segment) = segment {
|
||||||
|
let resource = resource;
|
||||||
|
|
||||||
let method = request.method();
|
let method = request.method();
|
||||||
match (segment, resource, method) {
|
match (segment, resource, method) {
|
||||||
("users", target, Method::Patch) => ("user_edit", target),
|
("users", target, Method::Patch) => ("user_edit", target),
|
||||||
("users", _, _) => {
|
("users", _, _) => {
|
||||||
if let Some("default_avatar") = request.routed_segment(2) {
|
if let Some("default_avatar") = extra {
|
||||||
return ("default_avatar", None);
|
return ("default_avatar", None);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,7 +124,7 @@ fn resolve_bucket<'r>(request: &'r rocket::Request<'_>) -> (&'r str, Option<&'r
|
|||||||
("bots", _, _) => ("bots", None),
|
("bots", _, _) => ("bots", None),
|
||||||
("channels", Some(id), _) => {
|
("channels", Some(id), _) => {
|
||||||
if request.method() == Method::Post {
|
if request.method() == Method::Post {
|
||||||
if let Some("messages") = request.routed_segment(2) {
|
if let Some("messages") = extra {
|
||||||
return ("messaging", Some(id));
|
return ("messaging", Some(id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user