update playlists
This commit is contained in:
parent
82c330cc13
commit
87ad77907b
5 changed files with 39 additions and 2 deletions
|
@ -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,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue