vgquotes/Src/VideoGameQuotes.Web/Global.asax.cs

80 lines
4.3 KiB
C#
Raw Normal View History

using System.Web.Mvc;
2011-02-09 03:50:45 +00:00
using System.Web.Routing;
using Lucene.Net.Index;
2011-02-10 04:39:59 +00:00
using Microsoft.Practices.Unity;
using Portoa.Search;
2011-02-10 04:39:59 +00:00
using Portoa.Web;
using Portoa.Web.Models;
using Portoa.Web.Routing;
using Portoa.Web.Security;
2011-02-10 04:39:59 +00:00
using Portoa.Web.Unity;
using UnityGenerics;
2011-02-10 04:39:59 +00:00
using VideoGameQuotes.Api;
using VideoGameQuotes.Api.Persistence;
using VideoGameQuotes.Web.Controllers;
using VideoGameQuotes.Web.Models;
2011-02-10 04:39:59 +00:00
using VideoGameQuotes.Web.Security;
using VideoGameQuotes.Web.Services;
2011-02-09 03:50:45 +00:00
namespace VideoGameQuotes.Web {
public class MvcApplication : MvcApplicationBase<User> {
protected override void ConfigureModelBinders(ModelBinderDictionary binders) {
binders
.Add<Region, FlagEnumModelBinder<Region>>()
.Add<BrowseModel, BrowseModelBinder>()
.Add<ApiModel, ApiModelBinder>();
ViewEngines.Engines.Add(Container.Resolve<SmartCaseViewEngine>());
}
protected override void ConfigureUnity() {
2011-02-10 04:39:59 +00:00
Container
.RegisterType<VerifyUserAttribute>(new InjectionProperty<VerifyUserAttribute>(attr => attr.UserProvider))
.RegisterAndIntercept<ICurrentUserProvider<User>, SessionBasedUserProvider>()
.RegisterAndIntercept<IUserService, UserService>()
.RegisterAndIntercept<IAdministrationService, AdministrationService>()
.RegisterAndIntercept<IQuoteService, QuoteService>()
.RegisterAndIntercept<ISystemService, SystemService>()
.RegisterAndIntercept<ICategoryService, CategoryService>()
.RegisterAndIntercept<IPublisherService, PublisherService>()
.RegisterAndIntercept<IGameService, GameService>()
.RegisterAndIntercept<IApiService, ApiService>()
.RegisterAndIntercept<IAuthenticationService, FormsAuthenticationService>()
.RegisterAndIntercept<IUserRepository, UserRepository>();
}
2011-02-17 05:30:31 +00:00
protected override void AfterStartUp() {
Container.Resolve<ISearchIndexBuilder<Quote, int>>().BuildIndex();
2011-02-10 04:39:59 +00:00
}
2011-02-09 03:50:45 +00:00
protected override void OnApplicationEnd() {
Container.Resolve<IndexWriter>().Close();
}
2011-02-10 04:39:59 +00:00
protected override void RegisterRoutes(RouteCollection routes) {
2011-02-09 03:50:45 +00:00
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
2011-02-10 04:39:59 +00:00
routes.IgnoreRoute("media/{*anything}");
2011-02-09 03:50:45 +00:00
2011-02-28 10:34:46 +00:00
routes.MapRoute("favicon", "favicon.ico", new { controller = "Home", action = "Favicon" });
//bullshit route so that RenderAction works
routes.MapSmartRoute("mainmenu", "home/mainmenu", new { controller = "Home", action = "MainMenu" });
routes.MapSmartRoute("quote-of-the-day", "quote/quoteoftheday", new { controller = "Quote", action = "QuoteOfTheDay" });
routes.MapSmartRoute("crud-default", "{controller}/{action}", null, new { controller = "System|Publisher|Game|Category", action = "Create|Edit|Delete" });
routes.MapSmartRoute("admin", "Admin/{action}", new { controller = "Admin", action = "Index" }, new { action = "Users|Create|Flags|Password" });
routes.MapSmartRoute("user-edit", "User/Edit/{usernameOrIp}", new { controller = "User", action = "Edit", usernameOrIp = @"\w+" });
routes.MapSmartRoute("user-default", "User/{action}/{id}", new { controller = "User", action = "Delete|Ban", id = UrlParameter.Optional });
routes.MapSmartRoute("api", "Api/{action}/{id}/{*criteria}", new { controller = "Api" }, new { action = "Game|System|Category|Publisher|Quote", id = @"\d+|all" });
routes.MapSmartRoute("home", "{action}", new { controller = "Home", action = "Index" }, new { action = "About|Contact|Login|Logout" });
routes.MapSmartRoute("paged", "{action}/{page}", new { controller = "Quote", page = 1 }, new { action = "Best|Recent", page = @"\d+" });
routes.MapSmartRoute("browse", "Browse/{*qualifiers}", new { controller = "Quote", action = "Browse" });
routes.MapSmartRoute("search", "Search/{*searchQuery}", new { controller = "Quote", action = "Search" });
routes.MapSmartRoute("quote-task", "Quote/{action}/{id}", new { controller = "Quote" }, new { action = "Edit", id = @"\d+" });
routes.MapSmartRoute("quote", "{action}", new { controller = "Quote" }, new { action = "Submit|Recent|Random|Vote|Flag" });
routes.MapSmartRoute("dismiss-flag", "DismissFlag", new { controller = "Quote", action = "DismissFlag" });
routes.MapSmartRoute("individual-quote", "Quote/{id}/{*text}", new { controller = "Quote", action = "Quote" }, new { id = @"\d+" });
routes.MapSmartRoute("default", "{controller}", new { controller = "Home", action = "Index" });
2011-02-09 03:50:45 +00:00
}
}
}