so-un-bot/legacy/Bot/Modules/OttoLinux/PhotoServer.cs

67 lines
2.3 KiB
C#
Raw Normal View History

2024-01-31 04:56:23 +01:00
// This feature is not maintained anymore
// it was exposing a webserver returning a json with all the questions and answers.
// It was originally intended for a web version of the bot, but was never completed.
using System.Net;
namespace SoUnBot.Modules.OttoLinux
{
public class PhotoServer
{
public PhotoServer(string baseDir)
{
using var listener = new HttpListener();
listener.Prefixes.Add("http://+:8001/");
listener.Start();
Console.WriteLine("PhotoServer is listening on port 8001...");
while (true)
{
HttpListenerContext ctx = listener.GetContext();
using HttpListenerResponse resp = ctx.Response;
resp.StatusCode = (int)HttpStatusCode.OK;
resp.StatusDescription = "Status OK";
resp.AddHeader("Access-Control-Allow-Origin", "*");
resp.AddHeader("Access-Control-Allow-Headers", "*");
resp.AddHeader("Access-Control-Allow-Methods", "GET");
if (ctx.Request.Url == null)
{
resp.StatusCode = (int)HttpStatusCode.BadRequest;
continue;
}
if (!File.Exists(baseDir + "/" + ctx.Request.Url.AbsolutePath))
{
resp.StatusCode = (int)HttpStatusCode.NotFound;
continue;
}
if (ctx.Request.Url.AbsolutePath.EndsWith("png"))
{
resp.AddHeader("Content-Type", "image/png");
}
else if (ctx.Request.Url.AbsolutePath.EndsWith("jpg"))
{
resp.AddHeader("Content-Type", "image/jpeg");
}
else
{
resp.StatusCode = (int)HttpStatusCode.BadRequest;
continue;
}
byte[] buffer = File.ReadAllBytes(baseDir + "/" + ctx.Request.Url.AbsolutePath);
resp.ContentLength64 = buffer.Length;
using Stream ros = resp.OutputStream;
try
{
ros.Write(buffer, 0, buffer.Length);
} catch { }
}
}
}
}