public void Handle(SimpleServerContext context) { if (context.Request.FormattedUrl == "/") { if (context.Request.Method == "GET") { var sw = new StreamWriter(context.Response.OutputStream); sw.WriteLine( "<h1>Hello, World!</h1><form action=\"/\" method=\"POST\"><a>What's your name?</a><input type=\"text\" name=\"name\" value=\"Dylan\" /><input type=\"submit\" /></form>"); sw.Flush(); sw.Close(); context.Response.Close(); } else if (context.Request.Method == "POST") { var sr = new StreamReader(context.Request.InputStream); var query = sr.ReadToEnd().AsFormParameters(); sr.Close(); var sw = new StreamWriter(context.Response.OutputStream); sw.WriteLine("<h1>Hello, " + query["name"] + "</h1><a href=\"/\">< Return</a>"); sw.Flush(); sw.Close(); context.Response.Close(); } } }
public static void Error(SimpleServerContext context, int code, string reason, string detail) { context.Response.StatusCode = code; context.Response.ReasonPhrase = reason; var stream = Assembly.GetAssembly(ErrorPage.TypeInAssembly) .GetManifestResourceStream(ErrorPage.NamespaceUrlOfType); var sr = new StreamReader(stream); var sw = new StreamWriter(context.Response.OutputStream); sw.WriteLine(sr.ReadToEnd().Replace("[Header]", code + " " + reason).Replace("[ErrorDetail]", detail + "<br><br>Your Request: " + context.Request.Method.Name + " " + context.Request.RawUrl)); sw.Flush(); context.Response.Close(); }
public static void Error404(SimpleServerContext context) { context.Response.StatusCode = 404; context.Response.ReasonPhrase = "Not Found"; var stream = Assembly.GetAssembly(ErrorPage.TypeInAssembly) .GetManifestResourceStream(ErrorPage.NamespaceUrlOfType); var sr = new StreamReader(stream); var sw = new StreamWriter(context.Response.OutputStream); sw.WriteLine(sr.ReadToEnd().Replace("[Header]", "404 Not Found").Replace("[ErrorDetail]", "We couldn't handle your request because a resource doesn't exist at the requested URL. If you think this is wrong, contact the website administrator.<br><br>Your Request: " + context.Request.Method.Name + " " + context.Request.RawUrl)); sw.Flush(); context.Response.Close(); }
public async Task HandleAsync(SimpleServerContext ctx) { await ctx.Request.Host.Handlers.ForEachAsync(async x => { if (x.CanHandle(ctx.Request) && !ctx.Handled) { await Task.Factory.StartNew(() => { x.Handle(ctx); ctx.Handled = true; }); } }); if (!ctx.Handled) { ErrorManager.Error404(ctx); } }