private static ISpecificHandler CreateHandler <TUrl, THandler>(AbstractUrl url) where TUrl : AbstractUrl where THandler : handlers.AbstractGetHandler <TUrl>, new() { return(new THandler() { url = (TUrl)url }); }
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)); }