fix: improve generated openapi.json (#584)

* fix: /bots/{bot}

Paths "/bots/{bot}" and "/bots/{target}" must not be equivalent.

Signed-off-by: Damocles078 <hellodamocles078@gmail.com>

* fix: /channels/{group_id}/recipients/{member_id}

Paths "/channels/{group_id}/recipients/{member_id}" and "/channels/{target}/recipients/{member}" must not be equivalent.

Signed-off-by: Damocles078 <hellodamocles078@gmail.com>

* fix: /channels/{channel_id}/webhook

Paths "/channels/{target}/webhooks" and "/channels/{channel_id}/webhooks" must not be equivalent.

Signed-off-by: Damocles078 <hellodamocles078@gmail.com>

* fix: /servers/{server_id}/members/{member_id}

Paths "/servers/{target}/members/{member}" and "/servers/{server}/members/{member}" must not be equivalent.

Signed-off-by: Damocles078 <hellodamocles078@gmail.com>

* fix: /custom/emoji/{emoji_id}

Paths "/custom/emoji/{id}" and "/custom/emoji/{emoji_id}" must not be equivalent.

Signed-off-by: Damocles078 <hellodamocles078@gmail.com>

---------

Signed-off-by: Damocles078 <hellodamocles078@gmail.com>
Signed-off-by: Damocles <106018783+Damocles078@users.noreply.github.com>
This commit is contained in:
Damocles
2026-03-28 01:31:57 +01:00
committed by GitHub
parent c2d4369e16
commit 52ed5100c2
9 changed files with 43 additions and 43 deletions

View File

@@ -24,13 +24,13 @@ use validator::Validate;
///
/// Edit a member by their id.
#[openapi(tag = "Server Members")]
#[patch("/<server>/members/<member>", data = "<data>")]
#[patch("/<server_id>/members/<member_id>", data = "<data>")]
pub async fn edit(
db: &State<Database>,
voice_client: &State<VoiceClient>,
user: User,
server: Reference<'_>,
member: Reference<'_>,
server_id: Reference<'_>,
member_id: Reference<'_>,
data: Json<v0::DataMemberEdit>,
) -> Result<Json<v0::Member>> {
let data = data.into_inner();
@@ -41,9 +41,9 @@ pub async fn edit(
})?;
// Fetch server and member
let mut server = server.as_server(db).await?;
let target_user = member.as_user(db).await?;
let mut member = member.as_member(db, &server.id).await?;
let mut server = server_id.as_server(db).await?;
let target_user = member_id.as_user(db).await?;
let mut member = member_id.as_member(db, &server.id).await?;
// Fetch our currrent permissions
let mut query = DatabasePermissionQuery::new(db, &user).server(&server);

View File

@@ -11,21 +11,21 @@ use rocket::{serde::json::Json, State};
///
/// Retrieve a member.
#[openapi(tag = "Server Members")]
#[get("/<target>/members/<member>?<roles>")]
#[get("/<server_id>/members/<member_id>?<roles>")]
pub async fn fetch(
db: &State<Database>,
user: User,
target: Reference<'_>,
member: Reference<'_>,
server_id: Reference<'_>,
member_id: Reference<'_>,
roles: Option<bool>,
) -> Result<Json<v0::MemberResponse>> {
let server = target.as_server(db).await?;
let server = server_id.as_server(db).await?;
let mut query = DatabasePermissionQuery::new(db, &user).server(&server);
if !query.are_we_a_member().await {
return Err(create_error!(NotFound));
}
let member = member.as_member(db, &server.id).await?;
let member = member_id.as_member(db, &server.id).await?;
if let Some(true) = roles {
Ok(Json(v0::MemberResponse::MemberWithRoles {
roles: server

View File

@@ -15,21 +15,21 @@ use rocket_empty::EmptyResponse;
///
/// Removes a member from the server.
#[openapi(tag = "Server Members")]
#[delete("/<target>/members/<member>")]
#[delete("/<server_id>/members/<member_id>")]
pub async fn kick(
db: &State<Database>,
voice_client: &State<VoiceClient>,
user: User,
target: Reference<'_>,
member: Reference<'_>,
server_id: Reference<'_>,
member_id: Reference<'_>,
) -> Result<EmptyResponse> {
let server = target.as_server(db).await?;
let server = server_id.as_server(db).await?;
if member.id == user.id {
if member_id.id == user.id {
return Err(create_error!(CannotRemoveYourself));
}
if member.id == server.owner {
if member_id.id == server.owner {
return Err(create_error!(InvalidOperation));
}
@@ -38,7 +38,7 @@ pub async fn kick(
.await
.throw_if_lacking_channel_permission(ChannelPermission::KickMembers)?;
let member = member.as_member(db, &server.id).await?;
let member = member_id.as_member(db, &server.id).await?;
if member.get_ranking(query.server_ref().as_ref().unwrap())
<= query.get_member_rank().unwrap_or(i64::MIN)
{
@@ -49,14 +49,14 @@ pub async fn kick(
.remove(db, &server, RemovalIntention::Kick, false)
.await?;
if let Some(channel_id) = get_user_voice_channel_in_server(target.id, &server.id).await? {
if let Some(channel_id) = get_user_voice_channel_in_server(member_id.id, &server.id).await? {
remove_user_from_voice_channel(
voice_client,
&UserVoiceChannel {
id: channel_id,
server_id: Some(server.id.clone()),
},
target.id,
member_id.id,
)
.await?;
};