Skip to content

Instantly share code, notes, and snippets.

@grumpydev
Created January 24, 2017 13:10
Show Gist options
  • Select an option

  • Save grumpydev/c93281668b32e295ef967e2f966f4e6a to your computer and use it in GitHub Desktop.

Select an option

Save grumpydev/c93281668b32e295ef967e2f966f4e6a to your computer and use it in GitHub Desktop.

Revisions

  1. grumpydev created this gist Jan 24, 2017.
    73 changes: 73 additions & 0 deletions Dumbo.cs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,73 @@
    using System;
    using System.Collections.Generic;
    using System.Globalization;
    using Nancy;
    using Nancy.Bootstrapper;
    using Nancy.Conventions;
    using Nancy.Culture;
    using Nancy.Diagnostics;
    using Nancy.ErrorHandling;
    using Nancy.Hosting.Aspnet;
    using Nancy.Localization;
    using Nancy.ModelBinding;
    using Nancy.Responses.Negotiation;
    using Nancy.Routing;
    using Nancy.Routing.Constraints;
    using Nancy.Routing.Trie;
    using Nancy.Validation;
    using Nancy.ViewEngines;

    namespace DumbassBootstrapper
    {
    /// <summary>
    /// Lowest common denominator bootstrapper with no container
    /// </summary>
    public class Dumbo : INancyBootstrapper, INancyModuleCatalog
    {
    public void Dispose()
    {
    }

    public void Initialise()
    {
    }

    public INancyEngine GetEngine()
    {
    var engine = new NancyEngine(new DefaultRequestDispatcher(new DefaultRouteResolver(this, new DefaultNancyModuleBuilder(new DefaultViewFactory(new DefaultViewResolver(new DefaultViewLocator(new FileSystemViewLocationProvider(new AspNetRootPathProvider()),new List<IViewEngine>() ),new ViewLocationConventions(new List<Func<string, object, ViewLocationContext, string>>()) ),new List<IViewEngine>(),new DefaultRenderContextFactory(new DefaultViewCache(), new DefaultViewResolver(new DefaultViewLocator(new FileSystemViewLocationProvider(new AspNetRootPathProvider()),new List<IViewEngine>() ),new ViewLocationConventions(new List<Func<string, object, ViewLocationContext, string>>()) ),new ResourceBasedTextResource(new ResourceAssemblyProvider()) ),new ViewLocationConventions(new List<Func<string, object, ViewLocationContext, string>>()),new AspNetRootPathProvider() ),new DefaultResponseFormatterFactory(new AspNetRootPathProvider(), new List<ISerializer>()), new DefaultModelBinderLocator(new List<IModelBinder>(),new DefaultBinder(new List<ITypeConverter>(),new List<IBodyDeserializer>(),new DefaultFieldNameConverter(), new BindingDefaults()) ),new DefaultValidatorLocator(new List<IModelValidatorFactory>()) ),new RouteCache(this, new DefaultNancyContextFactory(new DefaultCultureService(new CultureConventions(new List<Func<NancyContext, CultureInfo>>())), new DefaultRequestTraceFactory(), new ResourceBasedTextResource(new ResourceAssemblyProvider())), new DefaultRouteSegmentExtractor(), new DefaultRouteDescriptionProvider(), new DefaultCultureService(new CultureConventions(new List<Func<NancyContext, CultureInfo>>())),new List<IRouteMetadataProvider>() ),new RouteResolverTrie(new TrieNodeFactory(new List<IRouteSegmentConstraint>())) ),new List<IResponseProcessor>(), new DefaultRouteInvoker(new DefaultResponseNegotiator(new List<IResponseProcessor>(),new AcceptHeaderCoercionConventions(new List<Func<IEnumerable<Tuple<string, decimal>>, NancyContext, IEnumerable<Tuple<string, decimal>>>>()) )),new DefaultResponseNegotiator(new List<IResponseProcessor>(), new AcceptHeaderCoercionConventions(new List<Func<IEnumerable<Tuple<string, decimal>>, NancyContext, IEnumerable<Tuple<string, decimal>>>>())) ),new DefaultNancyContextFactory(new DefaultCultureService(new CultureConventions(new List<Func<NancyContext, CultureInfo>>())), new DefaultRequestTraceFactory(), new ResourceBasedTextResource(new ResourceAssemblyProvider())), new List<IStatusCodeHandler>(),new DefaultRequestTracing(), new DefaultStaticContentProvider(new AspNetRootPathProvider(), new StaticContentsConventions(new List<Func<NancyContext, string, Response>>())),new DefaultResponseNegotiator(new List<IResponseProcessor>(), new AcceptHeaderCoercionConventions(new List<Func<IEnumerable<Tuple<string, decimal>>, NancyContext, IEnumerable<Tuple<string, decimal>>>>())))
    {
    RequestPipelinesFactory = RequestPipelinesFactory
    };

    return engine;
    }

    private IPipelines RequestPipelinesFactory(NancyContext nancyContext)
    {
    return new Pipelines();
    }

    public IEnumerable<INancyModule> GetAllModules(NancyContext context)
    {
    return new[] {new MyModule()};
    }

    public INancyModule GetModule(Type moduleType, NancyContext context)
    {
    if (moduleType == typeof(MyModule))
    {
    return new MyModule();
    }

    throw new InvalidOperationException("No module found!");
    }
    }

    public class MyModule : NancyModule
    {
    public MyModule()
    {
    Get["/"] = _ => "Hello!";
    }
    }
    }