Exemplo n.º 1
0
 private static ISpecificHandler CreateHandler <TUrl, THandler>(AbstractUrl url)
     where TUrl : AbstractUrl
     where THandler : handlers.AbstractGetHandler <TUrl>, new()
 {
     return(new THandler()
     {
         url = (TUrl)url
     });
 }
Exemplo n.º 2
0
        public static ISpecificHandler getHandler(WebContext context)
        {
            if (context.httprequest.Path.ToLower().StartsWith("/do/"))
            {
                string action = context.httprequest.Path.ToLower().Substring(4).Trim('/');
                if (action.StartsWith("markthreadasread"))
                {
                    return(new handlers.request.MarkThreadAsReadHandler());
                }
                switch (action)
                {
                case "login":
                    return(new handlers.request.LoginHandler());

                case "logout":
                    return(new handlers.request.LogoutHandler());

                case "migrateaccount":
                    return(new handlers.request.MigrateAccountHandler());

                case "register":
                    return(new handlers.request.RegisterHandler());

                case "registerbyinvite":
                    return(new handlers.request.RegisterByInviteHandler());

                case "edit":
                    return(new handlers.request.EditHandler());

                case "punish":
                    return(new handlers.request.PunishHandler());

                case "reply":
                    return(new handlers.request.ReplyHandler());

                case "newthread":
                    return(new handlers.request.CreateThreadHandler());

                case "settings":
                    return(new handlers.request.SettingsHandler());

                case "userdata":
                    return(new handlers.request.UserDataHandler());

                case "sendpm":
                    return(new handlers.request.SendPMHandler());

                case "upload":
                    return(new handlers.request.UploadHandler());

                case "newpoll":
                    return(new handlers.request.CreatePollHandler());

                case "vote":
                    return(new handlers.request.VoteHandler());

                case "avatars/add":
                    return(new handlers.request.avatars.AddHandler());

                case "avatars/remove":
                    return(new handlers.request.avatars.RemoveHandler());

                case "avatars/setasdefault":
                    return(new handlers.request.avatars.SetAsDefaultHandler());

                case "maintenance/cleancache":
                    return(new handlers.request.maintenance.CleanCacheHandler());

                default:
                    return(new handlers.WrongUrlHandler());
                }
            }

            AbstractUrl url = UrlManager.Parse(context.httprequest.Path, context.httprequest.QueryString, context.account != null);

            if (url == null)
            {
                return(new handlers.WrongUrlHandler());
            }

            if (!context.httprequest.Path.StartsWith(url.canonical))
            {
                //throw new ApplicationException("Going to redirect to: '" + url.canonicalFull + "' (canonical='" + url.canonicalFull + "')");
                throw new RedirectException(url.canonicalFull);
            }

            return(handlersDictionary[url.GetType()](url));
        }