Exemple #1
0
        private APIResponse GetSearch(APIRequest request)
        {
            string keyword = request.Params["keyword"];

            Dictionary <string, object> responseData = new Dictionary <string, object>();

            string[] listOptions = APIUtils.SplitCSVList(request.Params["list"]);

            //run searches
            if (listOptions.Contains("songs"))
            {
                responseData.Add("songs", MediaDatabase.FindSongsByName(keyword));
            }
            if (listOptions.Contains("albums"))
            {
                responseData.Add("albums", MediaDatabase.FindAlbumsByName(keyword));
            }
            if (listOptions.Contains("artists"))
            {
                responseData.Add("artists", MediaDatabase.FindArtistsByName(keyword));
            }
            if (listOptions.Contains("folders"))
            {
                responseData.Add("folders", MediaDatabase.FindFoldersByName(keyword));
            }
            if (listOptions.Contains("playlists"))
            {
                responseData.Add("playlists", MediaDatabase.FindPlaylistsByName(keyword));
            }

            return(new APIResponse(JsonConvert.SerializeObject(new { data = responseData })));
        }
Exemple #2
0
        private APIResponse GetArtist(APIRequest request)
        {
            var artist = MediaDatabase.GetArtist(request.Segment);
            Dictionary <string, object> responseData = null;

            if (artist.HasValue)
            {
                responseData = new Dictionary <string, object>();
                responseData.Add("artist", artist.Value);

                //handle list song and list album options
                if (request.Params.ContainsKey("list"))
                {
                    var listOptions = APIUtils.SplitCSVList(request.Params["list"]);
                    if (listOptions.Contains("songs"))
                    {
                        responseData.Add("songs", MediaDatabase.GetArtistSongs(request.Segment));
                    }
                    if (listOptions.Contains("albums"))
                    {
                        responseData.Add("albums", MediaDatabase.GetArtistAlbums(request.Segment));
                    }
                }
            }

            return(new APIResponse(JsonConvert.SerializeObject(new { data = responseData })));
        }
Exemple #3
0
        private APIResponse PutPlaylist(APIRequest request)
        {
            var cname    = APIUtils.DecodeUrlDataString(request.Segment);
            var playlist = JsonConvert.DeserializeObject <Playlist>(request.Body);

            //TODO return different status codes: 201 for a new playlist, 204 for an update (?)

            MediaDatabase.SetPlaylist(cname, playlist);

            return(new APIResponse(string.Empty, (int)HttpStatusCode.Created));
        }
Exemple #4
0
        private APIResponse GetPlaylist(APIRequest request)
        {
            var cname    = APIUtils.DecodeUrlDataString(request.Segment);
            var playlist = MediaDatabase.GetPlaylist(cname);

            if (MediaDatabase.GetPlaylist(cname) == null)
            {
                throw new ResourceNotFoundException();
            }

            return(new APIResponse(JsonConvert.SerializeObject(new { data = playlist })));
        }
Exemple #5
0
        private APIResponse DeletePlaylist(APIRequest request)
        {
            var cname = APIUtils.DecodeUrlDataString(request.Segment);

            if (MediaDatabase.GetPlaylist(cname) == null)
            {
                throw new ResourceNotFoundException();
            }

            MediaDatabase.DeletePlaylist(cname);

            return(new APIResponse(string.Empty, (int)HttpStatusCode.NoContent));
        }
Exemple #6
0
        private APIResponse GetFolder(APIRequest request)
        {
            string folderPath = APIUtils.DecodeUrlDataString(request.Segment);
            Dictionary <string, object> responseData = null;

            if (MediaDatabase.GetFolderExists(folderPath))
            {
                responseData = new Dictionary <string, object>();
                responseData.Add("path", folderPath);
                responseData.Add("folders", MediaDatabase.GetFoldersInFolder(folderPath));
                responseData.Add("songs", MediaDatabase.GetSongsInFolder(folderPath));
            }
            else
            {
                throw new ResourceNotFoundException();
            }

            return(new APIResponse(JsonConvert.SerializeObject(new { data = responseData })));
        }
Exemple #7
0
        private APIResponse GetSearch2(APIRequest request)
        {
            request.Params.TryGetValue("song", out string song);
            request.Params.TryGetValue("album", out string album);
            request.Params.TryGetValue("artist", out string artist);

            if (string.IsNullOrEmpty(song) && string.IsNullOrEmpty(album) && string.IsNullOrEmpty(artist))
            {
                throw new ParameterMissingException();
            }

            if (!request.Params.ContainsKey("list"))
            {
                throw new ParameterMissingException("list");
            }

            Dictionary <string, object> responseData = new Dictionary <string, object>();

            string[] listOptions = APIUtils.SplitCSVList(request.Params["list"]);

            //run searches
            if (listOptions.Contains("songs"))
            {
                responseData.Add("songs", MediaDatabase.FindSongsByParameters(song, album, artist));
            }
            if (listOptions.Contains("albums"))
            {
                responseData.Add("albums", MediaDatabase.FindAlbumsByParameters(song, album, artist));
            }
            if (listOptions.Contains("artists"))
            {
                responseData.Add("artists", MediaDatabase.FindArtistsByParameters(song, album, artist));
            }

            return(new APIResponse(JsonConvert.SerializeObject(new { data = responseData })));
        }