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();
         }
     }
 }
Пример #2
0
        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();
        }
Пример #3
0
        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();
        }
Пример #4
0
        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);
            }
        }