示例#1
0
        public void ProcessRequest(HttpContext context)
        {
            Global.Logger.Debug("ThirdPartyApp: handler request - " + context.Request.Url);

            var message = string.Empty;

            try
            {
                var app = ThirdPartySelector.GetApp(context.Request[ThirdPartySelector.AppAttr]);
                Global.Logger.Debug("ThirdPartyApp: app - " + app);

                if (app.Request(context))
                {
                    return;
                }
            }
            catch (ThreadAbortException)
            {
                //Thats is responce ending
                return;
            }
            catch (Exception e)
            {
                Global.Logger.Error("ThirdPartyApp", e);
                message = e.Message;
            }

            if (string.IsNullOrEmpty(message))
            {
                if ((context.Request["error"] ?? "").ToLower() == "access_denied")
                {
                    message = context.Request["error_description"] ?? FilesCommonResource.AppAccessDenied;
                }
            }

            var redirectUrl = CommonLinkUtility.GetDefault();

            if (!string.IsNullOrEmpty(message))
            {
                if (SecurityContext.IsAuthenticated)
                {
                    redirectUrl += "#error/" + HttpUtility.UrlEncode(message);
                }
                else
                {
                    redirectUrl = string.Format("~/Auth.aspx?am={0}", (int)Studio.Auth.MessageKey.Error);
                }
            }
            context.Response.Redirect(redirectUrl, true);
        }
        public async Task Invoke(HttpContext context)
        {
            Log.Debug("ThirdPartyApp: handler request - " + context.Request.Url());

            var message = string.Empty;

            try
            {
                var app = ThirdPartySelector.GetApp(context.Request.Query[ThirdPartySelector.AppAttr]);
                Log.Debug("ThirdPartyApp: app - " + app);

                if (app.Request(context))
                {
                    await Next.Invoke(context);

                    return;
                }
            }
            catch (ThreadAbortException)
            {
                await Next.Invoke(context);

                //Thats is responce ending
                return;
            }
            catch (Exception e)
            {
                Log.Error("ThirdPartyApp", e);
                message = e.Message;
            }

            if (string.IsNullOrEmpty(message))
            {
                if ((context.Request.Query["error"].FirstOrDefault() ?? "").ToLower() == "access_denied")
                {
                    message = context.Request.Query["error_description"].FirstOrDefault() ?? FilesCommonResource.AppAccessDenied;
                }
            }

            var redirectUrl = CommonLinkUtility.GetDefault();

            if (!string.IsNullOrEmpty(message))
            {
                redirectUrl += AuthContext.IsAuthenticated ? "#error/" : "?m=";
                redirectUrl += HttpUtility.UrlEncode(message);
            }
            context.Response.Redirect(redirectUrl, true);
            await Next.Invoke(context);
        }