Exemple #1
0
        protected override void Load(ContainerBuilder builder)
        {
            ConfigurationConfigurator
            .RegisterConfigurationSettings()
            .FromAssemblies(typeof(WebAutofacModule).Assembly)
            .RegisterWithContainer(s => builder.RegisterInstance(s).AsSelf().SingleInstance())
            .AllowConfigurationEntriesThatDoNotHaveSettingsClasses(true)
            .DoYourThing();

            builder.Register(_ => FrankenwikiConfiguration.Create()
                             .WithWikiSourcePath(_.Resolve <WikiSourcePathSetting>())
                             .Build())
            .AsSelf();

            builder
            .RegisterType <Frankengenerator>()
            .As <IFrankengenerator>();
            builder
            .RegisterType <InMemoryFrankenstore>()
            .As <IFrankenstore>()
            .SingleInstance();
            builder
            .RegisterType <InMemoryFrankensearch>()
            .As <IFrankensearch>()
            .SingleInstance();
        }
 public void AndGivenTheBrowser()
 {
     _browser = new Browser(with =>
     {
         with.Module <PageModule>();
         with.Dependency(_store);
         with.Dependency(FrankenwikiConfiguration.Create()
                         .WithWikiSourcePath("test-wiki")
                         .Build());
     });
 }
 protected override void Load(ContainerBuilder builder)
 {
     builder.Register(_ => FrankenwikiConfiguration.Create()
                      .WithWikiSourcePath("my-wiki")
                      .Build());
     builder
     .RegisterType <Frankengenerator>()
     .As <IFrankengenerator>();
     builder
     .RegisterType <InMemoryFrankenstore>()
     .As <IFrankenstore>()
     .SingleInstance();
     builder
     .RegisterType <InMemoryFrankensearch>()
     .As <IFrankensearch>()
     .SingleInstance();
 }
Exemple #4
0
        public PageModule(
            IFrankenstore store,
            IRootPathProvider rootPathProvider,
            FrankenwikiConfiguration configuration)
        {
            _rootPathProvider = rootPathProvider;
            _configuration    = configuration;

            var strategies = new Func <string, Task <dynamic> >[]
            {
                slug => GetStaticResourceForSlug(slug),
                slug => GetFrankenpageResponseForSlug(store, slug),
            };

            Get["/wiki", true] = async(o, token) => await GetFrankenpageResponseForSlug(store, "index");

            Get["/wiki/{slug*}", true] = async(o, token) =>
            {
                var slug = (string)o.slug;
                // TODO HACK this is to allow routes like /wiki/cat.jpg/ which without the
                // trailing slash will fail because of a NancyFx bug in 1.1.0:
                // https://github.com/NancyFx/Nancy/issues/1829
                slug = slug.TrimEnd('/');

                foreach (var strategy in strategies)
                {
                    var result = await strategy(slug);

                    if (result != null)
                    {
                        return(result);
                    }
                }

                return((dynamic) new NotFoundResponse());
            };
            Get["/echo/{slug*}"]    = _ => _.slug;
            Get["/echo2/{slug}/hi"] = _ => _.slug;
        }