private void HandleGet(object sender, RequestContainer args) { string path = args.Context.Request.Url.AbsolutePath; // Remove leading slash path = path.Substring(1); if(path.EndsWith("/")){ path = path.Substring(0, path.Length-1); } var qs = args.Context.Request.QueryString; Logger.Log("GET {0}?{1}", LogLevel.Debug, path, ConstructQueryString(qs)); switch (path) { case "events": HandleGetEvents(args); break; case "news": HandleGetNews(args); break; case "mapitems": HandleGetMapItems(args); break; } }
private void HandleGetNews(RequestContainer args) { var afterStr = args.Context.Request.QueryString["after"]; var countStr = args.Context.Request.QueryString["count"]; int count; if (!int.TryParse(countStr, out count) || count < 0) { // Use the default value if the request does not specify a value for count, or if the specified value is invalid. count = DEFAULT_COUNT; } DateTime after; if (afterStr == null) { after = new DateTime(1, 1, 1, 0, 0, 0, DateTimeKind.Utc); var posts = databaseWrapper.GetNews(count, after); args.Writer.WriteLine(posts); } else { if (!DateTime.TryParse(afterStr, null, System.Globalization.DateTimeStyles.AssumeUniversal, out after)) { args.Context.Response.StatusCode = 400; } else { var posts = databaseWrapper.GetNews(count, after); args.Writer.WriteLine(posts); } } }
private void HandleRequest(HttpListenerContext context) { // Whatever the case, the server will always return UTF-8-encoded JSON, if it returns anything at all. context.Response.ContentEncoding = Encoding.UTF8; context.Response.ContentType = "application/json"; StreamReader reader = new StreamReader(context.Request.InputStream); StreamWriter writer = new StreamWriter(context.Response.OutputStream); RequestContainer container = new RequestContainer(context, reader, writer); switch (context.Request.HttpMethod) { case "POST": if (OnPOST != null) OnPOST(this, container); break; case "GET": if (OnGET != null) OnGET(this, container); break; default: Logger.Log("Unknown HTTP method received: {0}. Returning HTTP 400"); context.Response.StatusCode = 400; context.Response.StatusDescription = "Bad Request"; break; } writer.Close(); }
private void HandleGetMapItems(RequestContainer args) { var mapItems = databaseWrapper.GetMapItems(); args.Writer.WriteLine(mapItems); }
private void HandleGetEvents(RequestContainer args) { var events = databaseWrapper.GetEvents(); args.Writer.WriteLine(events); }
private void HandlePost(object sender, RequestContainer args) { }