pinakes-server: add utoipa annotations to all routes; fix tests
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I28cf5b7b7cff8e90e123d624d97cf9656a6a6964
This commit is contained in:
parent
8bde7f8fc2
commit
625077f341
60 changed files with 3493 additions and 242 deletions
|
|
@ -51,6 +51,19 @@ async fn check_playlist_access(
|
|||
Ok(playlist)
|
||||
}
|
||||
|
||||
#[utoipa::path(
|
||||
post,
|
||||
path = "/api/v1/playlists",
|
||||
tag = "playlists",
|
||||
request_body = CreatePlaylistRequest,
|
||||
responses(
|
||||
(status = 200, description = "Playlist created", body = PlaylistResponse),
|
||||
(status = 400, description = "Bad request"),
|
||||
(status = 401, description = "Unauthorized"),
|
||||
(status = 500, description = "Internal server error"),
|
||||
),
|
||||
security(("bearer_auth" = []))
|
||||
)]
|
||||
pub async fn create_playlist(
|
||||
State(state): State<AppState>,
|
||||
Extension(username): Extension<String>,
|
||||
|
|
@ -78,6 +91,17 @@ pub async fn create_playlist(
|
|||
Ok(Json(PlaylistResponse::from(playlist)))
|
||||
}
|
||||
|
||||
#[utoipa::path(
|
||||
get,
|
||||
path = "/api/v1/playlists",
|
||||
tag = "playlists",
|
||||
responses(
|
||||
(status = 200, description = "List of playlists", body = Vec<PlaylistResponse>),
|
||||
(status = 401, description = "Unauthorized"),
|
||||
(status = 500, description = "Internal server error"),
|
||||
),
|
||||
security(("bearer_auth" = []))
|
||||
)]
|
||||
pub async fn list_playlists(
|
||||
State(state): State<AppState>,
|
||||
Extension(username): Extension<String>,
|
||||
|
|
@ -93,6 +117,19 @@ pub async fn list_playlists(
|
|||
Ok(Json(visible))
|
||||
}
|
||||
|
||||
#[utoipa::path(
|
||||
get,
|
||||
path = "/api/v1/playlists/{id}",
|
||||
tag = "playlists",
|
||||
params(("id" = Uuid, Path, description = "Playlist ID")),
|
||||
responses(
|
||||
(status = 200, description = "Playlist details", body = PlaylistResponse),
|
||||
(status = 401, description = "Unauthorized"),
|
||||
(status = 403, description = "Forbidden"),
|
||||
(status = 404, description = "Not found"),
|
||||
),
|
||||
security(("bearer_auth" = []))
|
||||
)]
|
||||
pub async fn get_playlist(
|
||||
State(state): State<AppState>,
|
||||
Extension(username): Extension<String>,
|
||||
|
|
@ -104,6 +141,21 @@ pub async fn get_playlist(
|
|||
Ok(Json(PlaylistResponse::from(playlist)))
|
||||
}
|
||||
|
||||
#[utoipa::path(
|
||||
patch,
|
||||
path = "/api/v1/playlists/{id}",
|
||||
tag = "playlists",
|
||||
params(("id" = Uuid, Path, description = "Playlist ID")),
|
||||
request_body = UpdatePlaylistRequest,
|
||||
responses(
|
||||
(status = 200, description = "Playlist updated", body = PlaylistResponse),
|
||||
(status = 400, description = "Bad request"),
|
||||
(status = 401, description = "Unauthorized"),
|
||||
(status = 403, description = "Forbidden"),
|
||||
(status = 404, description = "Not found"),
|
||||
),
|
||||
security(("bearer_auth" = []))
|
||||
)]
|
||||
pub async fn update_playlist(
|
||||
State(state): State<AppState>,
|
||||
Extension(username): Extension<String>,
|
||||
|
|
@ -133,6 +185,19 @@ pub async fn update_playlist(
|
|||
Ok(Json(PlaylistResponse::from(playlist)))
|
||||
}
|
||||
|
||||
#[utoipa::path(
|
||||
delete,
|
||||
path = "/api/v1/playlists/{id}",
|
||||
tag = "playlists",
|
||||
params(("id" = Uuid, Path, description = "Playlist ID")),
|
||||
responses(
|
||||
(status = 200, description = "Playlist deleted"),
|
||||
(status = 401, description = "Unauthorized"),
|
||||
(status = 403, description = "Forbidden"),
|
||||
(status = 404, description = "Not found"),
|
||||
),
|
||||
security(("bearer_auth" = []))
|
||||
)]
|
||||
pub async fn delete_playlist(
|
||||
State(state): State<AppState>,
|
||||
Extension(username): Extension<String>,
|
||||
|
|
@ -144,6 +209,20 @@ pub async fn delete_playlist(
|
|||
Ok(Json(serde_json::json!({"deleted": true})))
|
||||
}
|
||||
|
||||
#[utoipa::path(
|
||||
post,
|
||||
path = "/api/v1/playlists/{id}/items",
|
||||
tag = "playlists",
|
||||
params(("id" = Uuid, Path, description = "Playlist ID")),
|
||||
request_body = PlaylistItemRequest,
|
||||
responses(
|
||||
(status = 200, description = "Item added"),
|
||||
(status = 401, description = "Unauthorized"),
|
||||
(status = 403, description = "Forbidden"),
|
||||
(status = 404, description = "Not found"),
|
||||
),
|
||||
security(("bearer_auth" = []))
|
||||
)]
|
||||
pub async fn add_item(
|
||||
State(state): State<AppState>,
|
||||
Extension(username): Extension<String>,
|
||||
|
|
@ -165,6 +244,22 @@ pub async fn add_item(
|
|||
Ok(Json(serde_json::json!({"added": true})))
|
||||
}
|
||||
|
||||
#[utoipa::path(
|
||||
delete,
|
||||
path = "/api/v1/playlists/{id}/items/{media_id}",
|
||||
tag = "playlists",
|
||||
params(
|
||||
("id" = Uuid, Path, description = "Playlist ID"),
|
||||
("media_id" = Uuid, Path, description = "Media item ID"),
|
||||
),
|
||||
responses(
|
||||
(status = 200, description = "Item removed"),
|
||||
(status = 401, description = "Unauthorized"),
|
||||
(status = 403, description = "Forbidden"),
|
||||
(status = 404, description = "Not found"),
|
||||
),
|
||||
security(("bearer_auth" = []))
|
||||
)]
|
||||
pub async fn remove_item(
|
||||
State(state): State<AppState>,
|
||||
Extension(username): Extension<String>,
|
||||
|
|
@ -179,6 +274,19 @@ pub async fn remove_item(
|
|||
Ok(Json(serde_json::json!({"removed": true})))
|
||||
}
|
||||
|
||||
#[utoipa::path(
|
||||
get,
|
||||
path = "/api/v1/playlists/{id}/items",
|
||||
tag = "playlists",
|
||||
params(("id" = Uuid, Path, description = "Playlist ID")),
|
||||
responses(
|
||||
(status = 200, description = "Playlist items", body = Vec<MediaResponse>),
|
||||
(status = 401, description = "Unauthorized"),
|
||||
(status = 403, description = "Forbidden"),
|
||||
(status = 404, description = "Not found"),
|
||||
),
|
||||
security(("bearer_auth" = []))
|
||||
)]
|
||||
pub async fn list_items(
|
||||
State(state): State<AppState>,
|
||||
Extension(username): Extension<String>,
|
||||
|
|
@ -196,6 +304,20 @@ pub async fn list_items(
|
|||
))
|
||||
}
|
||||
|
||||
#[utoipa::path(
|
||||
patch,
|
||||
path = "/api/v1/playlists/{id}/items/reorder",
|
||||
tag = "playlists",
|
||||
params(("id" = Uuid, Path, description = "Playlist ID")),
|
||||
request_body = ReorderPlaylistRequest,
|
||||
responses(
|
||||
(status = 200, description = "Item reordered"),
|
||||
(status = 401, description = "Unauthorized"),
|
||||
(status = 403, description = "Forbidden"),
|
||||
(status = 404, description = "Not found"),
|
||||
),
|
||||
security(("bearer_auth" = []))
|
||||
)]
|
||||
pub async fn reorder_item(
|
||||
State(state): State<AppState>,
|
||||
Extension(username): Extension<String>,
|
||||
|
|
@ -211,6 +333,19 @@ pub async fn reorder_item(
|
|||
Ok(Json(serde_json::json!({"reordered": true})))
|
||||
}
|
||||
|
||||
#[utoipa::path(
|
||||
post,
|
||||
path = "/api/v1/playlists/{id}/shuffle",
|
||||
tag = "playlists",
|
||||
params(("id" = Uuid, Path, description = "Playlist ID")),
|
||||
responses(
|
||||
(status = 200, description = "Shuffled playlist items", body = Vec<MediaResponse>),
|
||||
(status = 401, description = "Unauthorized"),
|
||||
(status = 403, description = "Forbidden"),
|
||||
(status = 404, description = "Not found"),
|
||||
),
|
||||
security(("bearer_auth" = []))
|
||||
)]
|
||||
pub async fn shuffle_playlist(
|
||||
State(state): State<AppState>,
|
||||
Extension(username): Extension<String>,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue