protected override void ApplicationStartup(IContainer container, Nancy.Bootstrapper.IPipelines pipelines) { base.ApplicationStartup(container, pipelines); var config = container.GetInstance<IAsimovConfig>(); var tempReportsFolder = Path.Combine(config.TempFolder, "AsimovTempReports"); GenericFileResponse.SafePaths.Add(tempReportsFolder); Conventions.StaticContentsConventions.Add( StaticContentConventionBuilder.AddDirectory("temp-reports", tempReportsFolder) ); pipelines.BeforeRequest.AddItemToEndOfPipeline(ctx => { if (ctx.Request.Method == "POST") { if (ctx.Request.Headers.Authorization != config.ApiKey) { return 401; } } return null; }); }
private Response FacebookRequestStartup(TinyIoC.TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines, NancyContext context) { if (context.Request != null) { string[] perms = null; dynamic signedRequest; var fbApp = container.Resolve<IFacebookApplication>(); if (context.TryParseFacebookSignedRequest(fbApp.AppId, fbApp.AppSecret, out signedRequest)) { if (((System.Collections.Generic.IDictionary<string, object>)signedRequest).ContainsKey("oauth_token")) { var fb = container.Resolve<FacebookClient>(); fb.AccessToken = signedRequest.oauth_token; try { var result = (IDictionary<string, object>)fb.Get("me/permissions"); perms = ((IDictionary<string, object>)((IList<object>)result["data"])[0]).Keys.ToArray(); } catch (FacebookOAuthException) { // access token is invalid so perms=none // but don't throw exception. fb.AccessToken = null; } } } context.Items[CustomFacebookExtensions.FacebookPermsKey] = perms ?? new string[0]; } return null; }
protected override void ApplicationStartup(IWindsorContainer container, Nancy.Bootstrapper.IPipelines pipelines) { //TODO: Uncomment once deployment dashboard work resumes // new DataUpgrade().ExecuteDataUpgrade(); base.ApplicationStartup(container, pipelines); }
protected override void ApplicationStartup(Ninject.IKernel container, Nancy.Bootstrapper.IPipelines pipelines) { base.ApplicationStartup(container, pipelines); Conventions.ViewLocationConventions.Add((viewName, model, context) => string.Concat("../../Views/", context.ModuleName.Replace("Controller", ""), "/", viewName)); Conventions.ViewLocationConventions.Add((viewName, model, context) => string.Concat("Views/", context.ModuleName.Replace("Controller", ""), "/", viewName)); }
protected override void RequestStartup(TinyIoC.TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines, NancyContext context) { base.RequestStartup(container, pipelines, context); pipelines.BeforeRequest.AddItemToStartOfPipeline( ctx => { var facebookClient = container.Resolve<Facebook.FacebookClient>(); var fbUser = context.CurrentUser as IFacebookUser; if (fbUser != null) facebookClient.AccessToken = fbUser.FacebookAccessToken; #region SignedRequest if (context.Request != null) { dynamic signedRequest; var fbApp = container.Resolve<Facebook.IFacebookApplication>(); if (context.Request.TryParseFacebookSignedRequest(fbApp.AppId, fbApp.AppSecret, out signedRequest)) { if (signedRequest.ContainsKey("oauth_token")) facebookClient.AccessToken = signedRequest.oauth_token; } } #endregion return null; }); }
protected override void ApplicationStartup(TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines) { Conventions.ViewLocationConventions.Add((viewName, model, context) => { return string.Concat(RinDB.VIEW_LOCATION, viewName); }); }
protected override void ApplicationStartup(Nancy.TinyIoc.TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines) { if (_authenticationProvider != null) { _authenticationProvider.Enable(pipelines); } }
protected override void ApplicationStartup(TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines) { this.Conventions.ViewLocationConventions.Add((viewName, model, context) => { return string.Concat("content/dist/", viewName); }); }
protected override void ApplicationStartup(Nancy.TinyIoc.TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines) { base.ApplicationStartup(container, pipelines); //Enable CSRF protection Nancy.Security.Csrf.Enable(pipelines); // Enabled cookie sessions Nancy.Session.CookieBasedSessions.Enable(pipelines); //Setup frame and origin options ( https://www.owasp.org/index.php/List_of_useful_HTTP_headers ) //may be overwritten by server (apache,ngix,iis,..) for config see https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options pipelines.AfterRequest.AddItemToEndOfPipeline((ctx) => { if (ctx.Response.StatusCode == HttpStatusCode.InternalServerError) return; ctx.Response.Headers.Add("X-Frame-Options", "SAMEORIGIN"); ctx.Response.Headers.Add("X-Download-Options", "noopen"); // IE extension ctx.Response.Headers.Add("X-Content-Type-Options", "nosniff"); ctx.Response.Headers.Add("X-XSS-Protection", "1; mode=block"); }); // Retain the casing in serialization of nancy json Nancy.Json.JsonSettings.RetainCasing = true; StaticConfiguration.CaseSensitive = false; // Enable debugging of nancy StaticConfiguration.EnableRequestTracing = false; // Dummy call to force the include of the Nancy.Serialization.JsonNet dll JsonNetSerializer a = new JsonNetSerializer(); a.CanSerialize("{}"); }
public void Handle(Nancy.HttpStatusCode statusCode, NancyContext context) { Exception innerException = ((Exception)context.Items[NancyEngine.ERROR_EXCEPTION]).InnerException; ExceptionDispatchInfo .Capture(innerException) .Throw(); }
protected override void ConfigureApplicationContainer(Nancy.TinyIoc.TinyIoCContainer container) { var mediator = new Mediator(); // mediator.Register<IHandleQueries<IQuery<User>, User>>(delegate // { // return new UserQueryHandler(); // }); // // mediator.Register<ICommandHandler<ICommand<int>, int>>(delegate // { // return new InsertUserCommandHandler(); // } // ); mediator.Register<IHandleQueries<IQuery<User>,User>, UserQueryHandler>(); mediator.Register<ICommandHandler<ICommand<int>,int>,UpdateUserCommandHandler>(); mediator.Register<ICommandHandler<ICommand<int>,int>,InsertUserCommandHandler>(); // mediator.Register<ICommandHandler<ICommand<int>, int>>(delegate // { // return new UpdateUserCommandHandler(); // } // ); container.Register<IMediate,Mediator>(mediator); }
protected override void ConfigureConventions(Nancy.Conventions.NancyConventions nancyConventions) { base.ConfigureConventions(nancyConventions); nancyConventions.StaticContentsConventions.Add(StaticContentConventionBuilder.AddDirectory("Content")); nancyConventions.StaticContentsConventions.Add(StaticContentConventionBuilder.AddDirectory("Scripts")); }
protected override void ApplicationStartup(TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines) { base.ApplicationStartup(container, pipelines); var buildStepNames = ConfigurationManager.AppSettings["PipelineBuildSteps"].Split(','); container.Register(buildStepNames.Select(s => (IBuildStep) new BuildStep(s)).ToArray()); }
protected override void ConfigureApplicationContainer(Nancy.TinyIoc.TinyIoCContainer container) { container.Register<InMemoryDatabase>().AsSingleton(); container.Register<IMediator>(new Mediator(container.Resolve, container.ResolveAll)); container.Register<IAsyncRequestHandler<SellInventory, Unit>, SellInventoryHandler>(); container.Register<IAsyncRequestHandler<GetInventoryItem, InventoryItem>, GetInventoryItemHandler>(); }
protected override void ApplicationStartup(Nancy.TinyIoc.TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines) { base.ApplicationStartup(container, pipelines); // EntityFramework のコードファースト設定。モデルに変更がある場合にDBを作り直す。 Database.SetInitializer(new DropCreateDatabaseIfModelChanges<TodoAppContext>()); }
protected override void ConfigureApplicationContainer(Nancy.TinyIoc.TinyIoCContainer container) { base.ConfigureApplicationContainer(container); container.Register<IPackageService>(_testFixture.PackageService); container.Register<IGlobalSettingsService>(_testFixture.GlobalSettingsService); }
protected override void ApplicationStartup(TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines) { base.ApplicationStartup(container, pipelines); if(WebConfigurationManager.AppSettings["hostingSelf"] == "false") RouteTable.Routes.MapHubs(); }
protected override void ConfigureApplicationContainer(Nancy.TinyIoc.TinyIoCContainer container) { base.ConfigureApplicationContainer(container); container.Register<IBrightstarService>(_brightstarService); container.Register<AbstractStorePermissionsProvider>(_storePermissionsProvider); container.Register(_systemPermissionsProvider); }
protected override void RequestStartup(Nancy.TinyIoc.TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines, NancyContext context) { base.RequestStartup(container, pipelines, context); var configuration = new StatelessAuthenticationConfiguration(GetLoadAuthenticationHook); StatelessAuthentication.Enable(pipelines, configuration); pipelines.AfterRequest.AddItemToEndOfPipeline( (ctx) => { var session = container.Resolve<IDocumentSession>(); if (session == null) return; session.SaveChanges(); session.Dispose(); }); //pipelines.BeforeRequest.AddItemToStartOfPipeline(GetLoadAuthenticationHook(configuration)); pipelines.AfterRequest.AddItemToEndOfPipeline(GetRedirectToLoginHook()); }
protected override void ApplicationStartup(Nancy.TinyIoc.TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines) { // Setup IoC container.Register<IDataStore>(new kernetics.messenger.database.DataStore()); //container.Register<IUserMapper>(); // TODO: Setup authentication //var formsAuthConfiguration = new Nancy.Authentication.Forms.FormsAuthenticationConfiguration() { // RedirectUrl = "~/login", // UserMapper = container.Resolve<IUserMapper>(), //}; //Nancy.Authentication.Forms.FormsAuthentication.Enable(pipelines, formsAuthConfiguration); // Error handling pipelines.OnError += (context, exception) => { if (exception is Exception) { return new Response() { StatusCode = HttpStatusCode.NotFound, ContentType = "text/html", Contents = (stream) => { var errorMessage = Encoding.UTF8.GetBytes(exception.Message); stream.Write(errorMessage, 0, errorMessage.Length); } }; } Console.WriteLine("Error"); return null; }; base.ApplicationStartup(container, pipelines); }
// The bootstrapper enables you to reconfigure the composition of the framework, // by overriding the various methods and properties. // For more information https://github.com/NancyFx/Nancy/wiki/Bootstrapper protected override void ApplicationStartup(Nancy.TinyIoc.TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines) { // pipelines.RegisterCompressionCheck(); pipelines.AfterRequest += (ctx) => { // if (ctx.Response.ContentType == "text/html") // ctx.Response.ContentType = ctx.Response.ContentType + "; charset=utf-8"; // var response = ctx.Response; // var contents = response.Contents; // response.Contents = responseStream => // { // using (var stream = new StreamWriter(responseStream, Encoding.UTF8)) // { // contents(stream.BaseStream); // } // // var stream = new StreamReader(responseStream, Encoding.UTF8); // }; // var jsonBytes = Encoding.UTF8.GetBytes(); // return new Response // { // ContentType = "application/json", // Contents = s => s.Write(jsonBytes, 0, jsonBytes.Length) // }; }; //显示详细错误 StaticConfiguration.DisableErrorTraces = false; //设置Json字符串最大长度 Nancy.Json.JsonSettings.MaxJsonLength = int.MaxValue; base.ApplicationStartup(container, pipelines); }
protected override void ConfigureApplicationContainer(Nancy.TinyIoc.TinyIoCContainer container) { base.ConfigureApplicationContainer(container); // register custom json serializer, camelCase in this case container.Register(typeof(JsonSerializer), typeof(CustomJsonSerializer)); }
protected override void ApplicationStartup(TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines) { base.ApplicationStartup(container, pipelines); CookieBasedSessions.Enable(pipelines); Conventions.ViewLocationConventions.Add((viewName, model, context) => string.Concat("views/", viewName)); Conventions.StaticContentsConventions.Add( StaticContentConventionBuilder.AddDirectory("assets", @"assets") ); container.Register<IFlexUserStore, FlexMembershipUserStore<User, Role>>(); container.Register(typeof(IDocumentStore), InitDocStore()); container.Register(typeof(IDocumentSession), (c, overloads) => c.Resolve<IDocumentStore>().OpenSession()); var cryptographyConfiguration = new CryptographyConfiguration( new RijndaelEncryptionProvider(new PassphraseKeyGenerator(Configuration.EncryptionKey, new byte[] { 8, 2, 10, 4, 68, 120, 7, 14 })), new DefaultHmacProvider(new PassphraseKeyGenerator(Configuration.HmacKey, new byte[] { 1, 20, 73, 49, 25, 106, 78, 86 }))); var authenticationConfiguration = new FormsAuthenticationConfiguration() { CryptographyConfiguration = cryptographyConfiguration, RedirectUrl = "/login", UserMapper = container.Resolve<IUserMapper>(), }; FormsAuthentication.Enable(pipelines, authenticationConfiguration); FlexMembershipProvider.RegisterClient( new GoogleOpenIdClient(), "Google", new Dictionary<string, object>()); }
// The bootstrapper enables you to reconfigure the composition of the framework, // by overriding the various methods and properties. // For more information https://github.com/NancyFx/Nancy/wiki/Bootstrapper protected override void ApplicationStartup(Nancy.TinyIoc.TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines) { base.ApplicationStartup(container, pipelines); StaticConfiguration.DisableErrorTraces = false; CookieBasedSessions.Enable(pipelines); }
protected override void ConfigureConventions(Nancy.Conventions.NancyConventions nancyConventions) { base.ConfigureConventions(nancyConventions); var profile = new ConventionProfile(); profile.SetElementNameConvention(new CamelCaseElementNameConvention()); MongoDB.Bson.Serialization.BsonClassMap.RegisterConventions(profile, _ => true); }
protected override void ConfigureRequestContainer(Nancy.TinyIoc.TinyIoCContainer container, NancyContext context) { container.AutoRegister(new List<Assembly> { typeof (ITrainRoute).Assembly }, false); base.ConfigureRequestContainer(container, context); }
protected override void ConfigureConventions(Nancy.Conventions.NancyConventions nancyConventions) { nancyConventions.StaticContentsConventions.Add(StaticContentConventionBuilder.AddDirectory("/", @"Web\")); nancyConventions.StaticContentsConventions.Add(StaticContentConventionBuilder.AddDirectory("/Styles", @"Web\styles")); nancyConventions.StaticContentsConventions.Add(StaticContentConventionBuilder.AddDirectory("/jspm_packages", @"Web\jspm_packages")); nancyConventions.StaticContentsConventions.Add(StaticContentConventionBuilder.AddDirectory("/dist", @"Web\dist")); base.ConfigureConventions(nancyConventions); }
protected override void ConfigureConventions(Nancy.Conventions.NancyConventions nancyConventions) { base.ConfigureConventions(nancyConventions); nancyConventions.StaticContentsConventions.Add(StaticContentConventionBuilder.AddDirectory("app", @"app")); nancyConventions.StaticContentsConventions.Add(StaticContentConventionBuilder.AddDirectory("css", @"css")); nancyConventions.StaticContentsConventions.Add(StaticContentConventionBuilder.AddDirectory("lib", @"lib")); }
protected override void ApplicationStartup(TinyIoC.TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines) { base.ApplicationStartup(container, pipelines); StaticConfiguration.DisableErrorTraces = false; SassAndCoffee.Hooks.Enable(pipelines, new InMemoryCache(), container.Resolve<IRootPathProvider>()); }
static int interval = 1084; // Sleep interval static void Main(string[] args) { Librarian Nancy; init(out Nancy); Nancy.Greeting(); Console.WriteLine(); Console.WriteLine("Press a key to continue...\n"); Console.ReadKey(); Console.WriteLine($"{Person.Persons[4]} wants to rent {Book.BookList[0]}."); Nancy.Rent(Book.BookList[0], Person.Persons[4]); Console.WriteLine(); Console.WriteLine("Press a key to continue...\n"); Console.ReadKey(); Console.WriteLine($"{Person.Persons[5]} wants to rent {Book.BookList[0]}."); Nancy.Rent(Book.BookList[0], Person.Persons[5]); Console.WriteLine(); Console.WriteLine("Press a key to continue...\n"); Console.ReadKey(); Console.WriteLine($"{Person.Persons[2]} wants to rent {Book.BookList[0]}."); Nancy.Rent(Book.BookList[0], Person.Persons[2]); Console.WriteLine(); // Some persons want to be notified Nancy.NotifyOn(Person.Persons[2]); Nancy.NotifyOn(Person.Persons[3]); Nancy.NotifyOn(Person.Persons[4]); Console.WriteLine("Press a key to continue...\n"); Console.ReadKey(); Console.WriteLine($"{Person.Persons[4]} returns {Book.BookList[0]}."); Nancy.Return(Book.BookList[0], Person.Persons[4]); Console.WriteLine(); Console.WriteLine("Press a key to continue...\n"); Console.ReadKey(); Person.Persons[2].PrintWishlist(); Person.Persons[3].PrintWishlist(); Person.Persons[4].PrintWishlist(); //checkSearch(Nancy); //checkRent(Nancy); Console.WriteLine($"{Person.Persons[2]} asks for list of books in the library."); Nancy.PrintBookList(Person.Persons[2]); Console.WriteLine(); Console.WriteLine("Press a key to continue...\n"); Console.ReadKey(); Nancy.PrintRentals(); //Person.PrintEveryone(); //Author.PrintEveryone(); //Nancy.PrintMemberList(); Console.Write("Press a key to quit."); Console.ReadKey(); }
// The bootstrapper enables you to reconfigure the composition of the framework, // by overriding the various methods and properties. // For more information https://github.com/NancyFx/Nancy/wiki/Bootstrapper protected override void ApplicationStartup(TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines) { var projRep = new ProjectRepository(null); var sampleProj = Samples.SampleProject(); ProjectIdUsedDuringDevelopment = sampleProj.Id; var user = Samples.SampleUser(sampleProj); UserIdUsedDuringDevelopment = user.Id; projRep.AddProject(sampleProj); projRep.AddProject(new Project {Id = Guid.NewGuid(), Name = "Testobjekt"}); projRep.AddProject(new Project {Id = Guid.NewGuid(), Name = "Skräpobjekt"}); var fileSystem = new MockFileSystem(); fileSystem.Directory.CreateDirectory(@"c:\HeatOn\users"); fileSystem.Directory.CreateDirectory(@"c:\HeatOn\projects"); var userRep = new UserRepository(fileSystem); userRep.SaveUser(user); container.Register<IProjectService>(new ProjectService(projRep)); container.Register<IUserRepository>(userRep); //Conventions.ViewLocationConventions.Add((viewName, model, context) => //{ // return string.Concat("bin/views/", viewName); //}); }