From eab2fe7f7f9cfd0fe4a6194dfdf196fbfeb227f8 Mon Sep 17 00:00:00 2001 From: Antoine Gersant Date: Sun, 24 Sep 2017 19:46:51 -0700 Subject: [PATCH] Added API endpoint to delete a playlist --- src/api.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/api.rs b/src/api.rs index 7b80f8d..390febe 100644 --- a/src/api.rs +++ b/src/api.rs @@ -156,6 +156,7 @@ fn get_endpoints(db: Arc, index_channel: Arc>>) 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, index_channel: Arc>>) }, "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 { Ok(Response::with((status::Ok, result_json))) } + +fn delete_playlist(request: &mut Request, db: &DB) -> IronResult { + let username = match request.extensions.get::() { + Some(s) => s.username.clone(), + None => return Err(Error::from(ErrorKind::AuthenticationRequired).into()), + }; + + let params = request.extensions.get::().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)) +}