update playlists

This commit is contained in:
JMARyA 2024-08-12 03:43:08 +02:00
parent 82c330cc13
commit 87ad77907b
Signed by: jmarya
GPG key ID: 901B2ADDF27C2263
5 changed files with 39 additions and 2 deletions

View file

@ -14,6 +14,7 @@ use crate::library::playlist::Visibility;
use crate::route::FallibleApiResponse;
use super::api_error;
use super::to_api;
use super::ToAPI;
#[get("/playlists")]
@ -53,6 +54,31 @@ pub async fn playlist_route(id: &str, u: User) -> FallibleApiResponse {
Ok(playlist.api().await)
}
#[get("/playlist/<id>/tracks")]
pub async fn playlist_tracks_route(id: &str, u: User) -> FallibleApiResponse {
if id == "recents" {
// todo : recently played
}
let playlist = Playlist::get(id)
.await
.ok_or_else(|| api_error("No playlist with that ID found"))?;
if matches!(playlist.visibility, Visibility::Private)
&& u.username != playlist.owner.get::<User>().await.username
{
return Err(api_error("Forbidden"));
}
let mut tracks: Vec<Track> = vec![];
for track in playlist.tracks {
tracks.push(track.get().await);
}
Ok(json!(to_api(&tracks).await))
}
#[derive(rocket::serde::Deserialize)]
pub struct PlaylistData {
pub title: String,