Files
timelog/backendCs/Program.cs
T
QkoSad fd82786671 done
2024-11-28 14:36:15 +02:00

79 lines
3.0 KiB
C#

using System.Net;
using System.Text;
using MySql.Data.MySqlClient;
/* using System.Threading; */
namespace Server
{
class Program
{
static void Main()
{
// create server
HttpListener listener = new HttpListener();
// routes need to be added first
listener.Prefixes.Add("http://localhost:5000/api/getall/");
listener.Prefixes.Add("http://localhost:5000/api/gettopten/");
listener.Prefixes.Add("http://localhost:5000/api/getuser/");
listener.Prefixes.Add("http://localhost:5000/api/reset/");
listener.Prefixes.Add("http://localhost:5000/api/createp/");
// listen
listener.Start();
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)
{
uri = request.Url.AbsolutePath;
}
else
{
return;
}
switch (uri)
{
case "/api/reset":
Reset.run(conn, request, response);
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;
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);
break;
}
// send the response
response.OutputStream.Close();
}
}
}
}