diff --git a/RelayCore/Program.cs b/RelayCore/Program.cs index ff77fe2..6d0a21a 100644 --- a/RelayCore/Program.cs +++ b/RelayCore/Program.cs @@ -1,11 +1,17 @@ using SurrealDb.Net; using SurrealDb.Net.Models.Auth; using System.Text.Json; +using System; +using System.Net; +using System.Threading.Tasks; +using System.Text; +using System.Text.Json; + using RelayCore.Enums; using RelayCore.Models; -await using var db = new SurrealDbClient("ws://127.0.0.1:8000/rpc"); +await using var db = new SurrealDbClient("ws://127.0.0.1:8000/rpc"); await db.SignIn(new RootAuth { Username = "root", Password = "secret" }); await db.Use("test", "test"); @@ -13,9 +19,13 @@ var keeper = await CreateUserAsync(db, "Keeper317", "Keeper317@gmail.com", "pass var kira = await CreateUserAsync(db, "Ru_Kira", "jduesling13@gmail.com", "password"); var test = await CreateUserAsync(db, "Test", "test@gmail.com", "password"); +var server = new Program(); +server.Main(db); + Console.WriteLine($"Keeper created: {ToJsonString(keeper)}"); Console.WriteLine($"Kira created: {ToJsonString(kira)}"); Console.WriteLine($"Test created: {ToJsonString(test)}"); + Console.ReadKey(true); return; @@ -53,4 +63,52 @@ static async Task CreateUserAsync(SurrealDbClient db, string username, st }); return updated; +} + + +partial class Program +{ + public async Task Main(SurrealDbClient db) + { + // Set up listener + using var listener = new HttpListener(); + listener.Prefixes.Add("http://localhost:8080/"); + listener.Start(); + Console.WriteLine("API Started: http://localhost:8080/"); + + while (true) + { + // Process requests + var context = await listener.GetContextAsync(); + var req = context.Request; + var res = context.Response; + + if (req.Url.AbsolutePath == "/api/hello" && req.HttpMethod == "GET") + { + var data = new { Message = "Hello, world!", Time = DateTime.Now }; + byte[] buf = Encoding.UTF8.GetBytes(JsonSerializer.Serialize(data)); + res.ContentType = "application/json"; + await res.OutputStream.WriteAsync(buf, 0, buf.Length); + } + + if (req.Url.AbsolutePath == "/api/users" && req.HttpMethod == "GET") + { + var data = new { Message = GetDBUsers(db).Result, Time = DateTime.Now }; + byte[] buf = Encoding.UTF8.GetBytes(JsonSerializer.Serialize(data)); + res.ContentType = "application/json"; + await res.OutputStream.WriteAsync(buf, 0, buf.Length); + } + res.Close(); + } + } + static async Task GetDBUsers(SurrealDbClient db) + { + var users = await db.Select("users"); + Console.WriteLine(ToJsonString(users)); + return users.ToArray(); + } + static string ToJsonString(object? o) + { + return JsonSerializer.Serialize(o, new JsonSerializerOptions { WriteIndented = true, }); + } } \ No newline at end of file