added tests for backend, router dom to frontend

This commit is contained in:
QkoSad
2024-12-03 16:09:25 +02:00
parent 8e4317abde
commit cb7b3ad94c
1142 changed files with 3599 additions and 573520 deletions
+71 -42
View File
@@ -1,13 +1,20 @@
using System.Net;
using System.Text;
using MySql.Data.MySqlClient;
/* using System.Threading; */
namespace Server
{
class Program
{
static void HandleMissingPath(HttpListenerResponse response)
{
response.StatusCode = 404;
string errorMessage = "Not Found";
byte[] buffer = Encoding.UTF8.GetBytes(errorMessage);
response.ContentType = "text/plain";
response.ContentLength64 = buffer.Length;
response.OutputStream.Write(buffer, 0, buffer.Length);
response.OutputStream.Write(buffer, 0, buffer.Length);
}
static void Main()
{
// create server
@@ -27,17 +34,10 @@ namespace Server
Console.WriteLine("Server is listening on http://localhost:5000/");
while (true)
{
// wait for request
HttpListenerContext context = listener.GetContext();
// get response and request
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
// mysql connection
string connectionString = "server=127.0.0.1;uid=monty;pwd=some_pass;database=timelog";
MySqlConnection conn = new MySqlConnection(connectionString);
// url after localhost:5000/
// i think the validation is unnecessry but the compiler doesn't
string uri;
if (request != null && request.Url != null)
{
@@ -47,44 +47,73 @@ namespace Server
{
return;
}
switch (uri)
switch (request.HttpMethod)
{
case "/api/reset":
Reset.run(conn, request, response);
case "GET":
switch (uri)
{
case "/api/reset":
Reset.HandleRequest(request, response);
break;
case "/api/getall":
/* Thread clientThread = new Thread(() => Getall.HandleRequest(request, response)); */
/* clientThread.Start(); */
Getall.HandleRequest(request, response);
break;
case "/api/gettopten":
Gettopten.HandleRequest(request, response);
break;
case "/api/getuser":
Getuser.HandleRequest(request, response);
break;
case "/api/createp":
CreateProcedure.HandleRequest(request, response);
break;
default:
HandleMissingPath(response);
break;
}
break;
case "/api/getall":
Getall.run(conn, request, response);
break;
case "/api/gettopten":
Gettopten.run(conn, request, response);
break;
case "/api/getuser":
Getuser.run(conn, request, response);
break;
case "/api/createp":
CreateProcedure.run(conn, request, response);
break;
case "/api/register":
Register.run(conn, request, response);
break;
case "/api/login":
Console.WriteLine("111");
Login.run(conn, request, response);
break;
case "/api/createlog":
CreateLog.run(conn, request, response);
case "POST":
if (request.HasEntityBody)
switch (uri)
{
case "/api/register":
Register.HandleRequest(request, response);
break;
case "/api/login":
Login.HandleRequest(request, response);
break;
case "/api/createlog":
CreateLog.HandleRequest(request, response, context);
break;
default:
HandleMissingPath(response);
break;
}
else
{
HandleMissingPath(response);
}
break;
default:
response.StatusCode = 404;
string errorMessage = "Not Found";
byte[] buffer = Encoding.UTF8.GetBytes(errorMessage);
response.ContentType = "text/plain";
response.ContentLength64 = buffer.Length;
response.OutputStream.Write(buffer, 0, buffer.Length);
HandleMissingPath(response);
break;
}
// send the response
response.OutputStream.Close();
// try catch is neccessary because if you send a post with no
// body the HTTPLIstener sends response automatically. Which
// would crash the server since i try to send response but
// respose has already been sent. It took me only 2 hours :)
/* try */
/* { */
/* // send the response */
/* response.OutputStream.Close(); */
/* } */
/* catch */
/* { */
/* Console.WriteLine("Tried sending post with no body"); */
/* } */
}
}
}