Added API endpoint to delete a playlist

This commit is contained in:
Antoine Gersant 2017-09-24 19:46:51 -07:00
parent 66e772feb3
commit eab2fe7f7f

View file

@ -156,6 +156,7 @@ fn get_endpoints(db: Arc<DB>, index_channel: Arc<Mutex<Sender<index::Command>>>)
let put_db = db.clone();
let list_db = db.clone();
let read_db = db.clone();
let delete_db = db.clone();
playlist_router.put("/",
move |request: &mut Request| {
self::save_playlist(request, put_db.deref())
@ -174,6 +175,12 @@ fn get_endpoints(db: Arc<DB>, index_channel: Arc<Mutex<Sender<index::Command>>>)
},
"read_playlist");
playlist_router.delete("/:playlist_name",
move |request: &mut Request| {
self::delete_playlist(request, delete_db.deref())
},
"delete_playlist");
auth_api_mount.mount("/playlist/", playlist_router);
}
@ -575,3 +582,20 @@ fn read_playlist(request: &mut Request, db: &DB) -> IronResult<Response> {
Ok(Response::with((status::Ok, result_json)))
}
fn delete_playlist(request: &mut Request, db: &DB) -> IronResult<Response> {
let username = match request.extensions.get::<SessionKey>() {
Some(s) => s.username.clone(),
None => return Err(Error::from(ErrorKind::AuthenticationRequired).into()),
};
let params = request.extensions.get::<Router>().unwrap();
let ref playlist_name = match params.find("playlist_name") {
Some(s) => s,
_ => return Err(Error::from(ErrorKind::MissingPlaylistName).into()),
};
playlist::delete_playlist(&playlist_name, &username, db)?;
Ok(Response::with(status::Ok))
}