protected HttpContentValues ParseQueryString(string queryString) { HttpContentValues parser = new HttpContentValues(); parser.Parse(queryString); return(parser); }
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; } }