using System.Net; using System.Text; 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 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/"); listener.Prefixes.Add("http://localhost:5000/api/register/"); listener.Prefixes.Add("http://localhost:5000/api/login/"); listener.Prefixes.Add("http://localhost:5000/api/createlog/"); // listen listener.Start(); Console.WriteLine("Server is listening on http://localhost:5000/"); while (true) { HttpListenerContext context = listener.GetContext(); HttpListenerRequest request = context.Request; HttpListenerResponse response = context.Response; // url after localhost:5000/ string uri; if (request != null && request.Url != null) uri = request.Url.AbsolutePath; else return; switch (request.HttpMethod) { 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 "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: HandleMissingPath(response); break; } } } } }