102 lines
3.0 KiB
C#
102 lines
3.0 KiB
C#
using System;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Tesses.WebServer.ConsoleApp
|
|
{
|
|
public class DynamicServer : Server
|
|
{
|
|
public DynamicServer()
|
|
{
|
|
|
|
}
|
|
Random rand = new Random();
|
|
int count = 0;
|
|
public override async Task PostAsync(ServerContext ctx)
|
|
{
|
|
ctx.ParseBody();
|
|
foreach(var item in ctx.QueryParams)
|
|
{
|
|
Console.WriteLine($"{item.Key}:");
|
|
foreach(var p in item.Value)
|
|
{
|
|
Console.WriteLine($"\t{p}");
|
|
}
|
|
Console.WriteLine();
|
|
|
|
}
|
|
await ctx.SendTextAsync("HELLO");
|
|
}
|
|
public override async Task GetAsync(ServerContext ctx)
|
|
{
|
|
//Console.WriteLine("HANDLE");
|
|
if(ctx.UrlPath=="/count")
|
|
{
|
|
count++;
|
|
await ctx.SendTextAsync($"This page has been viewed {count} times");
|
|
}
|
|
|
|
if(ctx.UrlPath=="/rand")
|
|
{
|
|
int min = 0;
|
|
int max = 65536;
|
|
int times = 5;
|
|
bool dont_show_hint = false;
|
|
if(ctx.QueryParams.ContainsKey("min"))
|
|
{
|
|
if(!int.TryParse(ctx.QueryParams.GetFirst("min"),out min))
|
|
{
|
|
min = 0;
|
|
}
|
|
else
|
|
{
|
|
dont_show_hint = true;
|
|
}
|
|
}
|
|
if (ctx.QueryParams.ContainsKey("max"))
|
|
{
|
|
if (!int.TryParse(ctx.QueryParams.GetFirst("max"), out max))
|
|
{
|
|
max = 65536;
|
|
}
|
|
else
|
|
{
|
|
dont_show_hint = true;
|
|
}
|
|
}
|
|
if (ctx.QueryParams.ContainsKey("times"))
|
|
{
|
|
if (!int.TryParse(ctx.QueryParams.GetFirst("times"), out times))
|
|
{
|
|
times = 5;
|
|
}
|
|
else
|
|
{
|
|
dont_show_hint = true;
|
|
}
|
|
}
|
|
max++;
|
|
StringBuilder html = new StringBuilder();
|
|
html.Append("<html><head><title>Random Numbers</title></head><body><h1>Random Numbers</h1>");
|
|
|
|
if(!dont_show_hint)
|
|
{
|
|
string hint = "Hint: <a href=\"./rand?min=41&max=1992×=42\">./rand?min=41&max=1992×=42</a><br>";
|
|
|
|
html.Append(hint);
|
|
}
|
|
html.Append(rand.Next(min, max));
|
|
for(int i = 1;i<times;i++)
|
|
{
|
|
html.Append($", {rand.Next(min, max)}");
|
|
}
|
|
html.Append("</body></html>");
|
|
await ctx.SendTextAsync(html.ToString());
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|