private static void RegisterComponents(ContainerBuilder containerBuilder, NameSpace nameSpace) { var assembly = typeof(GithubExplorerRibbon).Assembly; containerBuilder.RegisterAssemblyTypes(assembly) .Where(t => t.Name.EndsWith("ViewModel")) .AsSelf(); containerBuilder.Register(c => nameSpace).SingleInstance(); var settingsService = new SettingsService(); ApplicationSettings settings; // settingsService.Clear(); // uncomment this for testing if (!settingsService.ContainsKey("Settings")) { // NOTE - we can get away without doing basic auth, but i'll leave this here for the moment settings = new ApplicationSettings { UserName = "", Password = "" }; settingsService.Set("client", "9e96382c3109d9f35371"); settingsService.Set("secret", "60d6c49b946ba4ddc52a34aa0dc1cf43e6077ba6"); settingsService.Set("redirect", "http://code52.org"); settingsService.Set("Settings", settings); settingsService.Save(); } else { settings = settingsService.Get <ApplicationSettings>("Settings"); } containerBuilder.Register(c => settings) .SingleInstance(); containerBuilder.RegisterInstance(settingsService) .AsImplementedInterfaces() .SingleInstance(); // TODO: deprecate basic auth once we are happy with oauth flow IAuthenticator authenticator; //if (!string.IsNullOrWhiteSpace(settings.AccessToken)) //{ // authenticator = new OAuth2UriQueryParameterAuthenticator(settings.AccessToken); //} //else //{ authenticator = new HttpBasicAuthenticator(settings.UserName, settings.Password); //} containerBuilder.RegisterInstance(authenticator) .SingleInstance(); containerBuilder.RegisterType <GitHubOAuthAuthorizer>() .AsImplementedInterfaces(); containerBuilder.RegisterType <GitHubClient>() .AsImplementedInterfaces() .PropertiesAutowired() .SingleInstance(); containerBuilder.RegisterType <OutlookDispatchingRepository>() .As <IOutlookRepository>(); containerBuilder.RegisterType <GithubRepository>() .As <IGithubRepository>(); containerBuilder.RegisterType <GithubMailItem>() .As <IRibbonViewModel>() .AsSelf(); containerBuilder.RegisterType <GithubExplorerRibbon>() .As <IRibbonViewModel>() .AsSelf(); }