Example #1
0
        private RequestHandler.RequestInformation GetRequestHandler(HttpContext context)
        {
            var res = new RequestHandler.RequestInformation(context);

            res.ParseRequestData();
            return(res);
        }
Example #2
0
        private async Task Handle404(HttpContext context, Func <Task> next)
        {
            var req           = context.Request;
            var actionContext = CreateActionContext(context);

            AddAdditionalInformationToContext(context);
            RequestHandler.RequestInformation res = GetRequestHandler(context);

            try
            {
                var routeData = Manager.RouterManager.GetRouteFor(req.Path, res);
                var Executer  = Manager.GetExecuter(routeData.ModuleName);
                SetModuleNameInHttpContext(context, routeData.ModuleName);

                var x = routeData.GetAuthentcationType(res.Method);

                var auth = Manager.AuthenticationManager.GetAuthenticationByToken(x.Token);
                auth.HttpContext = context;
                context.Items[Consts.CONTEXT_ITEM_KEY_AUTH] = auth;

                if (auth.IsAuthenticated())
                {
                    res.ParseAdditionalParameters(routeData.GetQueryString(req.Path));
                    var actionResult = Executer.InvokeAction(res, routeData, context);
                    context.Response.StatusCode = 200;
                    if (actionResult is ActionResult)
                    {
                        await(actionResult as ActionResult).ExecuteResultAsync(actionContext);
                    }
                    else if (actionResult == null)
                    {
                        return;
                    }
                    else
                    {
                        await context.Response.WriteAsync(JsonConvert.ToString(actionResult));
                    }
                }
                else
                {
                    context.Response.Redirect(auth.LoginPagePath);
                }
            }
            catch (MethodRuntimeException ex)
            {
                context.Response.StatusCode = 406;
                await context.Response.WriteAsync($"{ex.Message} <b>{ex.RealStackTrace}</b>");
            }
            catch (AuthenticatonNotFoundException ex)
            {
                context.Response.StatusCode = 401;
                await context.Response.WriteAsync($"<div style='color:red;'>Authentication token not found : {ex.MissedToken}</div>");
            }
            catch (Exception ex)
            {
                if (ex is MethodRuntimeException)
                {
                    await context.Response.WriteAsync($"<b>{(ex as MethodRuntimeException).RealStackTrace}</b>");
                }
                context.Response.StatusCode = 418;
                await context.Response.WriteAsync(ex.Message);                //$"{res.ContentType} : {string.Join(" AND ", res.RequestParameters.Select(m => $"{m.Name} - {m.Value}"))} = {res.Method}");//string.Join(",",form.Select(m => $"{m.Key} = {m.Value[0]}")));
            }
        }