예제 #1
0
        protected HttpContentValues ParseQueryString(string queryString)
        {
            HttpContentValues parser = new HttpContentValues();

            parser.Parse(queryString);

            return(parser);
        }
예제 #2
0
        public override void HandleRequest(HttpListenerContext context)
        {
            try
            {
                //if context.request.url contains "list" else "song"
                if (context.Request.Url.Segments.Length > 1)
                {
                    string action = context.Request.Url.Segments[1];
                    System.Diagnostics.Trace.WriteLine(context.Request.Url.AbsoluteUri);
                    if (action == "song/")
                    {
                        //serve up song
                        string song = context.Request.Url.Segments[2];
                        song = HttpUtility.UrlDecode(song);
                        ServeUpSong(song);
                    }
                    else if (action == "index/")
                    {
                        //build up and return song list.
                        if (musicFiles != null && musicFiles.Keys.Count > 0)
                        {
                            SetSongList();
                        }
                    }
                    else if (action == "songajax/")
                    {
                        string song = context.Request.Url.Segments[2];

                        song = FileUtils.ConvertFromBase64(song);
                        var songData = GetSongAsByteArray(song);
                        if (songData == null)
                        {
                            //get error sound
                            songData = GetErrorSound();
                        }
                        base.RequestToJson(context, songData, "audio/mpeg");
                        return;
                    }
                    else if (action == "images/")
                    {
                        string image = context.Request.Url.Segments[2];
                        RequestToImage(context, FileUtils.GetResource(image));
                        return;
                    }
                    else if (action == "playlist/")
                    {
                        string playlistName = WebUtility.UrlDecode(context.Request.Url.Segments[2]);

                        base.RequestToJson(context, FileUtils.GetPlaylist(playlistName), "text/json");

                        return;
                    }
                    else if (action == "playlists/")
                    {
                        if (context.Request.HttpMethod == "PUT")
                        {
                            using (StreamReader sr = new StreamReader(context.Request.InputStream))
                            {
                                string            requestContent = sr.ReadToEnd();
                                HttpContentValues values         = ParseQueryString(requestContent);
                                Playlist          playlist       = new Playlist();
                                playlist.SaveOrUpdate(values);

                                JsonOKResponse(context);
                            }
                        }
                        else if (context.Request.HttpMethod == "GET")
                        {
                            base.RequestToJson(context, FileUtils.GetFileList(FileType.PlayList), "text/json");
                        }
                        else if (context.Request.HttpMethod == "DELETE")
                        {
                            string playlistName = WebUtility.UrlDecode(context.Request.Url.Segments[2].Replace("delete_", ""));

                            FileUtils.DeleteFile("playlist_" + playlistName + ".json");

                            JsonOKResponse(context);
                        }
                        return;
                    }
                    else if (action == "favicon.ico")
                    {
                        RequestToImage(context, FileUtils.GetIcon("favicon"), "image /x-icon");
                        return;
                    }
                }
                base.HandleRequest(context);
            }
            catch (Exception ex)
            {
                ErrorLogger.LogError(ex);
                context.Response.StatusCode = 500;
            }
        }