Example #1
0
        void HandleRequest(Request request, Response response)
        {
            Log.E(request.RequestURI.Value);
            FeintSDK.Response res = null;
            FeintSDK.Request req = new FeintSDK.Request(request.RequestURI.Value);
            req.Method = request.RequestMethod.Value;
            req.Session = new FeintSDK.Session();
            string text = null;

            text = System.Text.Encoding.UTF8.GetString(request.Stdin.GetContents());
            ParseContent(request, req, text);

            if (req.Url.StartsWith("/" + FeintSDK.Settings.StaticFolder))
            {

                res = GetStatic(response, res, req);
            }
            else
            {
                FeintSDK.RequestMethod actualMethod = FeintSDK.RequestMethod.POST;
                switch (request.RequestMethod.Value)
                {
                    case "GET":
                        actualMethod = FeintSDK.RequestMethod.GET;
                        break;
                    case "POST":
                        actualMethod = FeintSDK.RequestMethod.POST;
                        break;
                    case "PUT":
                        actualMethod = FeintSDK.RequestMethod.PUT;
                        break;
                    case "DELETE":
                        actualMethod = FeintSDK.RequestMethod.DELETE;
                        break;
                }

                if (!req.Url.EndsWith("/"))
                    req.Url += "/";
                FeintSDK.Url urlApp = UrlDispatcher(req, actualMethod);
                if (urlApp != null)
                {
                    setSesion(request, response, req);
                    res = RunApplication(response, res, req, urlApp);
                    var redirect = res.GetType().GetField("redirectUrl",
                     BindingFlags.NonPublic |
                     BindingFlags.Instance);
                    String url = (String)redirect.GetValue(res);
                    if (url != null)
                    {
                        response.SeeOtherRedirect(url);
                        return;
                    }
                }
            }
            if (res != null)
            {
                response.ResponseStatus =res.Status;
                response.Put(res.Data);
            }
            else
            {
                response.ResponseStatus = 404;
                response.PutStr("<HTML><BODY>404!!!</BODY></HTML>");
            }
        }