Esempio n. 1
0
        private void HandleWebRequest(HttpListenerContext context)
        {
            if (context.Request.HttpMethod == "OPTIONS")
            {
                context.Response.AddHeader("Access-Control-Allow-Headers", "*");
                context.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, PATCH");
                context.Response.AddHeader("Access-Control-Max-Age", "1728000");
                context.Response.AppendHeader("Access-Control-Allow-Origin", "*");
                context.Response.Close();
            }
            else if (authorizationHandler != null && !authorizationHandler.IsAuthorized(context))
            {
                context.Response.AppendHeader("Access-Control-Allow-Origin", "*");
                context.Response.StatusCode = 401;
                context.Response.Close();
            }
            else
            {
                context.Response.AppendHeader("Access-Control-Allow-Origin", "*");

                _ = Task.Run(() =>
                {
                    string method     = context.Request.HttpMethod;
                    string route      = context.Request.Url.LocalPath.ToString();
                    string identifier = method.ToUpper() + route.ToLower();

                    if (actions.ContainsKey(identifier))
                    {
                        string response;
                        try
                        {
                            response = JsonConvert.SerializeObject(actions[identifier](context));
                        }
                        catch (Exception e)
                        {
                            response = JsonConvert.SerializeObject(e);
                            context.Response.StatusCode = 500;
                        }


                        using (StreamWriter writer = new StreamWriter(context.Response.OutputStream))
                        {
                            writer.Write(response);
                            context.Response.ContentLength64 = response.Length;
                            context.Response.ContentType     = "Application/json";
                        }
                        context.Response.Close();
                    }
                    else
                    {
                        context.Response.StatusCode = 404;
                        context.Response.Close();
                    }
                });
            }
        }