/// <summary> /// Throws exception says that given type was not found in any accessible assembly /// </summary> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> instance.</param> /// <param name="type">Type that was not found</param> public static void ThrowTypeNotFound(IAssemblyCatalog assemblyCatalog, string type) { throw new NotSupportedException(string.Format( "Unable to discover CLR Type for model by the name of {0}.\n\nTry using a fully qualified type name and ensure that the assembly is added to the configuration file.\n\nCurrent IAssemblyCatalog assemblies:\n\t{1}.", type, assemblyCatalog.GetAssemblies().Select(a => a.FullName).Aggregate((n1, n2) => n1 + "\n\t" + n2))); }
/// <summary> /// Initializes a new instance of the <see cref="NancyVisualBasicRazorCodeParser"/> class. /// </summary> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> instance.</param> public NancyVisualBasicRazorCodeParser(IAssemblyCatalog assemblyCatalog) { this.assemblyCatalog = assemblyCatalog; this.MapDirective(ModelTypeKeyword, this.ModelTypeDirective); this.clrTypeResolver = new VisualBasicClrTypeResolver(assemblyCatalog); }
/// <summary> /// Creates a new instance of the <see cref="DefaultDiagnostics"/> class. /// </summary> /// <param name="diagnosticProviders"></param> /// <param name="rootPathProvider"></param> /// <param name="requestTracing"></param> /// <param name="configuration"></param> /// <param name="modelBinderLocator"></param> /// <param name="responseProcessors"></param> /// <param name="routeSegmentConstraints"></param> /// <param name="cultureService"></param> /// <param name="requestTraceFactory"></param> /// <param name="routeMetadataProviders"></param> /// <param name="textResource"></param> /// <param name="environment"></param> /// <param name="typeCatalog"></param> /// <param name="assemblyCatalog"></param> public DefaultDiagnostics( IEnumerable<IDiagnosticsProvider> diagnosticProviders, IRootPathProvider rootPathProvider, IRequestTracing requestTracing, NancyInternalConfiguration configuration, IModelBinderLocator modelBinderLocator, IEnumerable<IResponseProcessor> responseProcessors, IEnumerable<IRouteSegmentConstraint> routeSegmentConstraints, ICultureService cultureService, IRequestTraceFactory requestTraceFactory, IEnumerable<IRouteMetadataProvider> routeMetadataProviders, ITextResource textResource, INancyEnvironment environment, ITypeCatalog typeCatalog, IAssemblyCatalog assemblyCatalog) { this.diagnosticProviders = diagnosticProviders; this.rootPathProvider = rootPathProvider; this.requestTracing = requestTracing; this.configuration = configuration; this.modelBinderLocator = modelBinderLocator; this.responseProcessors = responseProcessors; this.routeSegmentConstraints = routeSegmentConstraints; this.cultureService = cultureService; this.requestTraceFactory = requestTraceFactory; this.routeMetadataProviders = routeMetadataProviders; this.textResource = textResource; this.environment = environment; this.typeCatalog = typeCatalog; this.assemblyCatalog = assemblyCatalog; }
/// <summary> /// Creates a new instance of the <see cref="DefaultDiagnostics"/> class. /// </summary> /// <param name="diagnosticProviders"></param> /// <param name="rootPathProvider"></param> /// <param name="requestTracing"></param> /// <param name="configuration"></param> /// <param name="modelBinderLocator"></param> /// <param name="responseProcessors"></param> /// <param name="routeSegmentConstraints"></param> /// <param name="cultureService"></param> /// <param name="requestTraceFactory"></param> /// <param name="routeMetadataProviders"></param> /// <param name="textResource"></param> /// <param name="environment"></param> /// <param name="typeCatalog"></param> /// <param name="assemblyCatalog"></param> /// <param name="acceptHeaderCoercionConventions"></param> public DefaultDiagnostics( IEnumerable <IDiagnosticsProvider> diagnosticProviders, IRootPathProvider rootPathProvider, IRequestTracing requestTracing, NancyInternalConfiguration configuration, IModelBinderLocator modelBinderLocator, IEnumerable <IResponseProcessor> responseProcessors, IEnumerable <IRouteSegmentConstraint> routeSegmentConstraints, ICultureService cultureService, IRequestTraceFactory requestTraceFactory, IEnumerable <IRouteMetadataProvider> routeMetadataProviders, ITextResource textResource, INancyEnvironment environment, ITypeCatalog typeCatalog, IAssemblyCatalog assemblyCatalog, AcceptHeaderCoercionConventions acceptHeaderCoercionConventions) { this.diagnosticProviders = diagnosticProviders; this.rootPathProvider = rootPathProvider; this.requestTracing = requestTracing; this.configuration = configuration; this.modelBinderLocator = modelBinderLocator; this.responseProcessors = responseProcessors; this.routeSegmentConstraints = routeSegmentConstraints; this.cultureService = cultureService; this.requestTraceFactory = requestTraceFactory; this.routeMetadataProviders = routeMetadataProviders; this.textResource = textResource; this.environment = environment; this.typeCatalog = typeCatalog; this.assemblyCatalog = assemblyCatalog; this.acceptHeaderCoercionConventions = acceptHeaderCoercionConventions; }
private static TinyIoCContainer ConfigureContainer(IEnumerable<IDiagnosticsProvider> providers, IRootPathProvider rootPathProvider, IRequestTracing requestTracing, NancyInternalConfiguration configuration, INancyEnvironment diagnosticsEnvironment, ITypeCatalog typeCatalog, IAssemblyCatalog assemblyCatalog) { var diagContainer = new TinyIoCContainer(); diagContainer.Register<IInteractiveDiagnostics, InteractiveDiagnostics>(); diagContainer.Register<IRequestTracing>(requestTracing); diagContainer.Register<IRootPathProvider>(rootPathProvider); diagContainer.Register<NancyInternalConfiguration>(configuration); diagContainer.Register<IModelBinderLocator, DefaultModelBinderLocator>(); diagContainer.Register<IBinder, DefaultBinder>(); diagContainer.Register<IFieldNameConverter, DefaultFieldNameConverter>(); diagContainer.Register<BindingDefaults, BindingDefaults>(); diagContainer.Register<INancyEnvironment>(diagnosticsEnvironment); diagContainer.Register<ISerializer>(new DefaultJsonSerializer(diagnosticsEnvironment)); diagContainer.Register<ITypeCatalog>(typeCatalog); diagContainer.Register<IAssemblyCatalog>(assemblyCatalog); foreach (var diagnosticsProvider in providers) { var key = string.Concat( diagnosticsProvider.GetType().FullName, "_", diagnosticsProvider.DiagnosticObject.GetType().FullName); diagContainer.Register<IDiagnosticsProvider>(diagnosticsProvider, key); } foreach (var moduleType in typeCatalog.GetTypesAssignableTo<DiagnosticModule>()) { diagContainer.Register(typeof(INancyModule), moduleType, moduleType.FullName).AsMultiInstance(); } return diagContainer; }
public FakeDiagnostics( IRootPathProvider rootPathProvider, IRequestTracing requestTracing, NancyInternalConfiguration configuration, IModelBinderLocator modelBinderLocator, IEnumerable <IResponseProcessor> responseProcessors, IEnumerable <IRouteSegmentConstraint> routeSegmentConstraints, ICultureService cultureService, IRequestTraceFactory requestTraceFactory, IEnumerable <IRouteMetadataProvider> routeMetadataProviders, ITextResource textResource, INancyEnvironment environment, ITypeCatalog typeCatalog, IAssemblyCatalog assemblyCatalog) { this.diagnosticProviders = (new IDiagnosticsProvider[] { new FakeDiagnosticsProvider() }).ToArray(); this.rootPathProvider = rootPathProvider; this.requestTracing = requestTracing; this.configuration = configuration; this.modelBinderLocator = modelBinderLocator; this.responseProcessors = responseProcessors; this.routeSegmentConstraints = routeSegmentConstraints; this.cultureService = cultureService; this.requestTraceFactory = requestTraceFactory; this.routeMetadataProviders = routeMetadataProviders; this.textResource = textResource; this.environment = environment; this.typeCatalog = typeCatalog; this.assemblyCatalog = assemblyCatalog; }
/// <summary> /// Initializes a new instance of the <see cref="NancyCSharpRazorCodeParser"/> class. /// </summary> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> instance.</param> public NancyCSharpRazorCodeParser(IAssemblyCatalog assemblyCatalog) { this.assemblyCatalog = assemblyCatalog; this.MapDirectives(this.ModelDirective, "model"); this.clrTypeResolver = new CSharpClrTypeResolver(assemblyCatalog); }
public static BootstrapperFactory Create(ModuleLoader moduleLoader, IAssemblyCatalog assemblyCatalog, BootstrapperOptions options) { return(new BootstrapperFactory(moduleLoader, assemblyCatalog, new OptionsWrapper <BootstrapperOptions>(options))); }
public BootstrapperFactory(ModuleLoader moduleLoader, IAssemblyCatalog assemblyCatalog, IOptions <BootstrapperOptions> options) { _moduleLoader = moduleLoader; _assemblyCatalog = assemblyCatalog; _options = options; }
public Bootstrapper(ModuleLoader moduleLoader, IServiceCollection serviceCollection, IAssemblyCatalog assemblyCatalog, IOptions <BootstrapperOptions> options) { _moduleLoader = moduleLoader; _serviceCollection = serviceCollection; _assemblyCatalog = assemblyCatalog; _options = options; }
/// <summary> /// Initializes a new instance of the <see cref="RazorViewEngine"/> class. /// </summary> /// <param name="configuration">The <see cref="IRazorConfiguration"/> that should be used by the engine.</param> /// <param name="environment">An <see cref="INancyEnvironment"/> instance.</param> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> instance.</param> public RazorViewEngine(IRazorConfiguration configuration, INancyEnvironment environment, IAssemblyCatalog assemblyCatalog) { this.razorAssemblyProvider = new RazorAssemblyProvider(configuration, assemblyCatalog); this.viewRenderer = new CSharpRazorViewRenderer(this.razorAssemblyProvider); this.razorConfiguration = configuration; this.traceConfiguration = environment.GetValue<TraceConfiguration>(); this.AddDefaultNameSpaces(this.viewRenderer.Host); }
/// <summary> /// Initializes a new instance of the <see cref="RazorViewEngine"/> class. /// </summary> /// <param name="configuration">The <see cref="IRazorConfiguration"/> that should be used by the engine.</param> /// <param name="environment">An <see cref="INancyEnvironment"/> instance.</param> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> instance.</param> public RazorViewEngine(IRazorConfiguration configuration, INancyEnvironment environment, IAssemblyCatalog assemblyCatalog) { this.viewRenderer = new CSharpRazorViewRenderer(assemblyCatalog); this.razorConfiguration = configuration; this.assemblyCatalog = assemblyCatalog; this.traceConfiguration = environment.GetValue <TraceConfiguration>(); this.AddDefaultNameSpaces(this.viewRenderer.Host); }
/// <summary> /// Initializes a new instance of the <see cref="VisualBasicRazorViewRenderer"/> class. /// </summary> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> instance.</param> public VisualBasicRazorViewRenderer(IAssemblyCatalog assemblyCatalog) { this.ModelCodeGenerator = typeof(ModelCodeGenerator); this.Assemblies = new List<string>(); this.Provider = new VBCodeProvider(); this.Host = new NancyRazorEngineHost(new VBRazorCodeLanguage(), assemblyCatalog); }
/// <summary> /// Initializes new instance of ClrTypeResolver class. /// Provided parameters are used to recognized specific symbols in particular language /// </summary> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> used to resolve model types from the available assemblies.</param> /// <param name="identifier">Symbol type for identifier</param> /// <param name="keyword">Symbol type for keyword</param> /// <param name="dot">Symbol type for dot ('.')</param> /// <param name="whiteSpace">Symbol type for whitespace</param> /// <param name="arrayBegin">Type of symbol that begins array</param> /// <param name="arrayEnd">Type of symbol that ends array</param> protected ClrTypeResolver(IAssemblyCatalog assemblyCatalog, TSymbolType identifier, TSymbolType keyword, TSymbolType dot, TSymbolType whiteSpace, TSymbolType arrayBegin, TSymbolType arrayEnd) { this.assemblyCatalog = assemblyCatalog; this.identifier = identifier; this.keyword = keyword; this.dot = dot; this.whiteSpace = whiteSpace; this.arrayBegin = arrayBegin; this.arrayEnd = arrayEnd; }
/// <summary> /// Initializes a new instance of the <see cref="VisualBasicRazorViewRenderer"/> class. /// </summary> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> instance.</param> public VisualBasicRazorViewRenderer(IAssemblyCatalog assemblyCatalog) { this.ModelCodeGenerator = typeof(ModelCodeGenerator); this.Assemblies = new List <string>(); this.Provider = new VBCodeProvider(); this.Host = new NancyRazorEngineHost(new VBRazorCodeLanguage(), assemblyCatalog); }
public static IHostBuilder UseBootstrapperFactory(this IHostBuilder builder, IAssemblyCatalog assemblyCatalog, BootstrapperOptions options, IEnumerable <ModuleMetadataValidator> validators = null) { return(builder.UseServiceProviderFactory(context => { var moduleLoader = new ModuleLoader(validators); options.ConfigureBuildTimeServices.Add(collection => collection.AddSingleton(context.HostingEnvironment)); options.ConfigureBuildTimeServices.Add(collection => collection.AddSingleton(context.Configuration)); return BootstrapperFactory.Create(moduleLoader, assemblyCatalog, options); })); }
/// <summary> /// Initializes a new instance of the <see cref="NancyRazorEngineHost"/> class. /// </summary> /// <param name="language">The language.</param> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> instance.</param> public NancyRazorEngineHost(RazorCodeLanguage language, IAssemblyCatalog assemblyCatalog) : base(language) { this.assemblyCatalog = assemblyCatalog; this.DefaultBaseClass = typeof (NancyRazorViewBase).FullName; this.DefaultNamespace = "RazorOutput"; this.DefaultClassName = "RazorView"; var context = new GeneratedClassContext("Execute", "Write", "WriteLiteral", "WriteTo", "WriteLiteralTo", typeof (HelperResult).FullName, "DefineSection"); context.ResolveUrlMethodName = "ResolveUrl"; this.GeneratedClassContext = context; }
private IServiceProvider StartInternal(IAssemblyCatalog assemblyCatalog, ICollection <ModuleMetadata> modules) { var buildTimeServicesCollection = new ServiceCollection(); var options = _options.Value; foreach (var action in options.ConfigureBuildTimeServices) { action(buildTimeServicesCollection); } var lifecycleListenerTypes = LoadLifecycleListeners(modules.Select(x => x.Type.Assembly).Distinct().ToArray()); foreach (var module in modules) { buildTimeServicesCollection.AddSingleton(module.Type); } foreach (var lifecycleListenerType in lifecycleListenerTypes) { buildTimeServicesCollection.AddSingleton(_lifecycleListenerType, lifecycleListenerType); } buildTimeServicesCollection.AddSingleton(assemblyCatalog); var preBuildServices = buildTimeServicesCollection.BuildServiceProvider(); using (preBuildServices) { RunRegistrations(buildTimeServicesCollection, modules, preBuildServices, ModuleLoadPhase.PreBuild); } var buildTimeServices = buildTimeServicesCollection.BuildServiceProvider(); using (buildTimeServices) { RunRegistrations(_serviceCollection, modules, buildTimeServices, ModuleLoadPhase.Build); foreach (var module in modules) { var moduleInstance = buildTimeServices.GetRequiredService(module.Type); (moduleInstance as IServiceCollectionModule)?.Build(_serviceCollection); } } _serviceCollection.AddSingleton(assemblyCatalog); _serviceCollection.AddSingleton <IModuleCatalog>(provider => new ModuleCatalog(modules)); return(_serviceCollection.BuildServiceProvider(validateScopes: true)); }
/// <summary> /// Initializes a new instance of the <see cref="CSharpRazorViewRenderer"/> class. /// </summary> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> instance.</param> public CSharpRazorViewRenderer(IAssemblyCatalog assemblyCatalog) { this.Assemblies = new List<string> { typeof(Binder).GetAssemblyPath() }; this.ModelCodeGenerator = typeof(ModelCodeGenerator); this.Provider = new CSharpCodeProvider(); this.Host = new NancyRazorEngineHost(new CSharpRazorCodeLanguage(), assemblyCatalog); this.Host.NamespaceImports.Add("Microsoft.CSharp.RuntimeBinder"); }
/// <summary> /// Initializes a new instance of the <see cref="NancyRazorEngineHost"/> class. /// </summary> /// <param name="language">The language.</param> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> instance.</param> public NancyRazorEngineHost(RazorCodeLanguage language, IAssemblyCatalog assemblyCatalog) : base(language) { this.assemblyCatalog = assemblyCatalog; this.DefaultBaseClass = typeof(NancyRazorViewBase).FullName; this.DefaultNamespace = "RazorOutput"; this.DefaultClassName = "RazorView"; var context = new GeneratedClassContext("Execute", "Write", "WriteLiteral", "WriteTo", "WriteLiteralTo", typeof(HelperResult).FullName, "DefineSection"); context.ResolveUrlMethodName = "ResolveUrl"; this.GeneratedClassContext = context; }
/// <summary> /// Initializes a new instance of the <see cref="CSharpRazorViewRenderer"/> class. /// </summary> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> instance.</param> public CSharpRazorViewRenderer(IAssemblyCatalog assemblyCatalog) { this.Assemblies = new List <string> { typeof(Binder).GetAssemblyPath() }; this.ModelCodeGenerator = typeof(ModelCodeGenerator); this.Provider = new Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider(); this.Host = new NancyRazorEngineHost(new CSharpRazorCodeLanguage(), assemblyCatalog); this.Host.NamespaceImports.Add("Microsoft.CSharp.RuntimeBinder"); }
/// <summary> /// Initializes a new instance of the <see cref="RazorViewEngine"/> class. /// </summary> /// <param name="configuration">The <see cref="IRazorConfiguration"/> that should be used by the engine.</param> /// <param name="environment">An <see cref="INancyEnvironment"/> instance.</param> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> instance.</param> public RazorViewEngine(IRazorConfiguration configuration, INancyEnvironment environment, IAssemblyCatalog assemblyCatalog) { this.viewRenderers = new List<IRazorViewRenderer> { new CSharpRazorViewRenderer(assemblyCatalog), new VisualBasicRazorViewRenderer(assemblyCatalog) }; this.razorConfiguration = configuration; this.traceConfiguration = environment.GetValue<TraceConfiguration>(); foreach (var renderer in this.viewRenderers) { this.AddDefaultNameSpaces(renderer.Host); } }
/// <summary> /// Initializes a new instance of the <see cref="RazorViewEngine"/> class. /// </summary> /// <param name="configuration">The <see cref="IRazorConfiguration"/> that should be used by the engine.</param> /// <param name="environment">An <see cref="INancyEnvironment"/> instance.</param> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> instance.</param> public RazorViewEngine(IRazorConfiguration configuration, INancyEnvironment environment, IAssemblyCatalog assemblyCatalog) { this.viewRenderers = new List <IRazorViewRenderer> { new CSharpRazorViewRenderer(assemblyCatalog), new VisualBasicRazorViewRenderer(assemblyCatalog) }; this.razorConfiguration = configuration; this.assemblyCatalog = assemblyCatalog; this.traceConfiguration = environment.GetValue <TraceConfiguration>(); foreach (var renderer in this.viewRenderers) { this.AddDefaultNameSpaces(renderer.Host); } }
public InfoModule(IRootPathProvider rootPathProvider, NancyInternalConfiguration configuration, INancyEnvironment environment, ITypeCatalog typeCatalog, IAssemblyCatalog assemblyCatalog) : base("/info") { this.typeCatalog = typeCatalog; this.assemblyCatalog = assemblyCatalog; Get("/", _ => { return View["Info"]; }); Get("/data", _ => { dynamic data = new ExpandoObject(); data.Nancy = new ExpandoObject(); data.Nancy.Version = string.Format("v{0}", this.GetType().GetTypeInfo().Assembly.GetName().Version.ToString()); data.Nancy.TracesDisabled = !environment.GetValue<TraceConfiguration>().DisplayErrorTraces; data.Nancy.CaseSensitivity = StaticConfiguration.CaseSensitive ? "Sensitive" : "Insensitive"; data.Nancy.RootPath = rootPathProvider.GetRootPath(); data.Nancy.Hosting = GetHosting(); data.Nancy.BootstrapperContainer = GetBootstrapperContainer(); data.Nancy.LocatedBootstrapper = NancyBootstrapperLocator.Bootstrapper.GetType().ToString(); data.Nancy.LoadedViewEngines = GetViewEngines(); data.Configuration = new Dictionary<string, object>(); foreach (var propertyInfo in configuration.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public)) { var value = propertyInfo.GetValue(configuration, null); data.Configuration[propertyInfo.Name] = (!typeof(IEnumerable).IsAssignableFrom(value.GetType())) ? new[] { value.ToString() } : ((IEnumerable<object>)value).Select(x => x.ToString()); } return this.Response.AsJson((object)data); }); }
/// <summary> /// Initializes a new instance of the <see cref="InfoModule"/> class, with /// the provided <paramref name="rootPathProvider"/>, <paramref name="configuration"/>, /// <paramref name="environment"/>, <paramref name="typeCatalog"/> and <paramref name="assemblyCatalog"/>. /// </summary> /// <param name="rootPathProvider">The root path provider.</param> /// <param name="configuration">The configuration.</param> /// <param name="environment">The environment.</param> /// <param name="typeCatalog">The type catalog.</param> /// <param name="assemblyCatalog">The assembly catalog.</param> public InfoModule(IRootPathProvider rootPathProvider, NancyInternalConfiguration configuration, INancyEnvironment environment, ITypeCatalog typeCatalog, IAssemblyCatalog assemblyCatalog) : base("/info") { this.typeCatalog = typeCatalog; this.assemblyCatalog = assemblyCatalog; Get("/", _ => { return(View["Info"]); }); Get("/data", _ => { dynamic data = new ExpandoObject(); data.Nancy = new ExpandoObject(); data.Nancy.Version = string.Format("v{0}", this.GetType().GetTypeInfo().Assembly.GetName().Version.ToString()); data.Nancy.TracesDisabled = !environment.GetValue <TraceConfiguration>().DisplayErrorTraces; data.Nancy.CaseSensitivity = StaticConfiguration.CaseSensitive ? "Sensitive" : "Insensitive"; data.Nancy.RootPath = rootPathProvider.GetRootPath(); data.Nancy.Hosting = GetHosting(); data.Nancy.BootstrapperContainer = GetBootstrapperContainer(); data.Nancy.LocatedBootstrapper = NancyBootstrapperLocator.GetBootstrapperType().ToString(); data.Nancy.LoadedViewEngines = GetViewEngines(); data.Configuration = new Dictionary <string, object>(); foreach (var propertyInfo in configuration.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public)) { var value = propertyInfo.GetValue(configuration, null); data.Configuration[propertyInfo.Name] = (!typeof(IEnumerable).IsAssignableFrom(value.GetType())) ? new[] { value.ToString() } : ((IEnumerable <object>)value).Select(x => x.ToString()); } return(this.Response.AsJson((object)data)); }); }
/// <summary> /// Initializes a new instance of the <see cref="ResourceViewLocationProvider"/> class. /// </summary> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> instance.</param> public ResourceViewLocationProvider(IAssemblyCatalog assemblyCatalog) : this(new DefaultResourceReader(), new ResourceAssemblyProvider(assemblyCatalog)) { }
/// <summary> /// Initializes a new instance of the <see cref="RazorAssemblyProvider"/> class. /// </summary> /// <param name="configuration">An <see cref="IRazorConfiguration"/> instance.</param> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> instance.</param> public RazorAssemblyProvider(IRazorConfiguration configuration, IAssemblyCatalog assemblyCatalog) { this.configuration = configuration; this.assemblyCatalog = assemblyCatalog; this.assemblies = new Lazy<IReadOnlyCollection<Assembly>>(this.GetAllAssemblies); }
/// <summary> /// Gets all <see cref="Assembly"/> instances using the <see cref="AssemblyResolveStrategies.All"/> strategy. /// </summary> /// <param name="assemblyCatalog">The <see cref="IAssemblyCatalog"/> instance that the assemblies should be reolved from.</param> /// <returns>An <see cref="IReadOnlyCollection{T}"/> of <see cref="Assembly"/> instances.</returns> public static IReadOnlyCollection <Assembly> GetAssemblies(this IAssemblyCatalog assemblyCatalog) { return(assemblyCatalog.GetAssemblies(AssemblyResolveStrategies.All)); }
public ModularNancyBootstrapper( IEnumerable <IAssemblyCatalog> assemblyCatalogs) { _assemblyCatalog = new CompositeAssemblyCatalog(assemblyCatalogs); }
private DefaultPlatform(IAssemblyCatalog assemblyCatalog) { this.AssemblyCatalog = assemblyCatalog; this.TypeCatalog = new TypeCatalog(this.AssemblyCatalog); this.BootstrapperLocator = new BootstrapperLocator(this.TypeCatalog); }
/// <summary> /// Constructs a <see cref="DefaultCommandModuleResolver"/> /// </summary> /// <param name="serviceProvider"></param> /// <param name="assemblyCatalog"></param> public DefaultCommandModuleResolver(IServiceProvider serviceProvider, IAssemblyCatalog assemblyCatalog) { ServiceProvider = serviceProvider; AssemblyCatalog = assemblyCatalog; }
public DiagnosticsModuleCatalog(IEnumerable<IDiagnosticsProvider> providers, IRootPathProvider rootPathProvider, IRequestTracing requestTracing, NancyInternalConfiguration configuration, INancyEnvironment diagnosticsEnvironment, ITypeCatalog typeCatalog, IAssemblyCatalog assemblyCatalog) { this.container = ConfigureContainer(providers, rootPathProvider, requestTracing, configuration, diagnosticsEnvironment, typeCatalog, assemblyCatalog); }
/// <summary> /// Initializes a new instance of the <see cref="T:Nancy.DefaultTypeCatalog" /> class. /// </summary> /// <param name="assemblyCatalog">An <see cref="T:Nancy.IAssemblyCatalog" /> instanced, used to get the assemblies that types should be resolved from.</param> public InternalTypeCatalog(IAssemblyCatalog assemblyCatalog) { this.assemblyCatalog = assemblyCatalog; cache = new ConcurrentDictionary <Type, IReadOnlyCollection <Type> >(); }
/// <summary> /// Initializes a new instance of the <see cref="DefaultTypeCatalog"/> class. /// </summary> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> instanced, used to get the assemblies that types should be resolved from.</param> public DefaultTypeCatalog(IAssemblyCatalog assemblyCatalog) { this.assemblyCatalog = assemblyCatalog; this.cache = new ConcurrentDictionary <Type, IReadOnlyCollection <Type> >(); }
/// <summary> /// Enables the diagnostics dashboard and will intercept all requests that are passed to /// the condigured paths. /// </summary> public static void Enable(IPipelines pipelines, IEnumerable <IDiagnosticsProvider> providers, IRootPathProvider rootPathProvider, IRequestTracing requestTracing, NancyInternalConfiguration configuration, IModelBinderLocator modelBinderLocator, IEnumerable <IResponseProcessor> responseProcessors, IEnumerable <IRouteSegmentConstraint> routeSegmentConstraints, ICultureService cultureService, IRequestTraceFactory requestTraceFactory, IEnumerable <IRouteMetadataProvider> routeMetadataProviders, ITextResource textResource, INancyEnvironment environment, ITypeCatalog typeCatalog, IAssemblyCatalog assemblyCatalog) { var diagnosticsConfiguration = environment.GetValue <DiagnosticsConfiguration>(); var diagnosticsEnvironment = GetDiagnosticsEnvironment(); var diagnosticsModuleCatalog = new DiagnosticsModuleCatalog(providers, rootPathProvider, requestTracing, configuration, diagnosticsEnvironment, typeCatalog, assemblyCatalog); var diagnosticsRouteCache = new RouteCache( diagnosticsModuleCatalog, new DefaultNancyContextFactory(cultureService, requestTraceFactory, textResource, environment), new DefaultRouteSegmentExtractor(), new DefaultRouteDescriptionProvider(), cultureService, routeMetadataProviders); var diagnosticsRouteResolver = new DefaultRouteResolver( diagnosticsModuleCatalog, new DiagnosticsModuleBuilder(rootPathProvider, modelBinderLocator, diagnosticsEnvironment, environment), diagnosticsRouteCache, new RouteResolverTrie(new TrieNodeFactory(routeSegmentConstraints)), environment); var serializer = new DefaultObjectSerializer(); pipelines.BeforeRequest.AddItemToStartOfPipeline( new PipelineItem <Func <NancyContext, Response> >( PipelineKey, ctx => { if (!ctx.ControlPanelEnabled) { return(null); } if (!ctx.Request.Path.StartsWith(diagnosticsConfiguration.Path, StringComparison.OrdinalIgnoreCase)) { return(null); } if (!diagnosticsConfiguration.Enabled) { return(HttpStatusCode.NotFound); } ctx.Items[ItemsKey] = true; var resourcePrefix = string.Concat(diagnosticsConfiguration.Path, "/Resources/"); if (ctx.Request.Path.StartsWith(resourcePrefix, StringComparison.OrdinalIgnoreCase)) { var resourceNamespace = "Nancy.Diagnostics.Resources"; var path = Path.GetDirectoryName(ctx.Request.Url.Path.Replace(resourcePrefix, string.Empty)) ?? string.Empty; if (!string.IsNullOrEmpty(path)) { resourceNamespace += string.Format(".{0}", path.Replace(Path.DirectorySeparatorChar, '.')); } return(new EmbeddedFileResponse( typeof(DiagnosticsHook).GetTypeInfo().Assembly, resourceNamespace, Path.GetFileName(ctx.Request.Url.Path))); } RewriteDiagnosticsUrl(diagnosticsConfiguration, ctx); return(ValidateConfiguration(diagnosticsConfiguration) ? ExecuteDiagnostics(ctx, diagnosticsRouteResolver, diagnosticsConfiguration, serializer, diagnosticsEnvironment) : new DiagnosticsViewRenderer(ctx, environment)["help"]); })); }
/// <summary> /// Initializes a new instance of the <see cref="NancyCSharpRazorBuildProvider"/> class. /// </summary> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> instance.</param> public NancyCSharpRazorBuildProvider(IAssemblyCatalog assemblyCatalog) { this.compilerType = this.GetDefaultCompilerTypeForLanguage("C#"); this.host = new NancyRazorEngineHost(new CSharpRazorCodeLanguage(), assemblyCatalog); }
/// <summary> /// Initializes a new instance of the <see cref="RazorAssemblyProvider"/> class. /// </summary> /// <param name="configuration">An <see cref="IRazorConfiguration"/> instance.</param> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> instance.</param> public RazorAssemblyProvider(IRazorConfiguration configuration, IAssemblyCatalog assemblyCatalog) { this.configuration = configuration; this.assemblyCatalog = assemblyCatalog; this.assemblies = new Lazy <IReadOnlyCollection <Assembly> >(this.GetAllAssemblies); }
public CustomResourceAssemblyProvider(IAssemblyCatalog assemblyCatalog) { this.assemblyCatalog = assemblyCatalog; }
public DiagnosticsModuleCatalog(IEnumerable <IDiagnosticsProvider> providers, IRootPathProvider rootPathProvider, IRequestTracing requestTracing, NancyInternalConfiguration configuration, INancyEnvironment diagnosticsEnvironment, ITypeCatalog typeCatalog, IAssemblyCatalog assemblyCatalog) { this.container = ConfigureContainer(providers, rootPathProvider, requestTracing, configuration, diagnosticsEnvironment, typeCatalog, assemblyCatalog); }
/// <summary> /// Initializes a new instance of the <see cref="NancyCSharpRazorBuildProvider"/> class. /// </summary> /// <param name="assemblyCatalog"></param> public NancyVisualBasicRazorBuildProvider(IAssemblyCatalog assemblyCatalog) { this.compilerType = this.GetDefaultCompilerTypeForLanguage("VB"); this.host = new NancyRazorEngineHost(new VBRazorCodeLanguage(), assemblyCatalog); }
private static TinyIoCContainer ConfigureContainer(IEnumerable <IDiagnosticsProvider> providers, IRootPathProvider rootPathProvider, IRequestTracing requestTracing, NancyInternalConfiguration configuration, INancyEnvironment diagnosticsEnvironment, ITypeCatalog typeCatalog, IAssemblyCatalog assemblyCatalog) { var diagContainer = new TinyIoCContainer(); diagContainer.Register <IInteractiveDiagnostics, InteractiveDiagnostics>(); diagContainer.Register <IRequestTracing>(requestTracing); diagContainer.Register <IRootPathProvider>(rootPathProvider); diagContainer.Register <NancyInternalConfiguration>(configuration); diagContainer.Register <IModelBinderLocator, DefaultModelBinderLocator>(); diagContainer.Register <IBinder, DefaultBinder>(); diagContainer.Register <IFieldNameConverter, DefaultFieldNameConverter>(); diagContainer.Register <BindingDefaults, BindingDefaults>(); diagContainer.Register <INancyEnvironment>(diagnosticsEnvironment); diagContainer.Register <ISerializer>(new DefaultJsonSerializer(diagnosticsEnvironment)); diagContainer.Register <ITypeCatalog>(typeCatalog); diagContainer.Register <IAssemblyCatalog>(assemblyCatalog); foreach (var diagnosticsProvider in providers) { var key = string.Concat( diagnosticsProvider.GetType().FullName, "_", diagnosticsProvider.DiagnosticObject.GetType().FullName); diagContainer.Register <IDiagnosticsProvider>(diagnosticsProvider, key); } foreach (var moduleType in typeCatalog.GetTypesAssignableTo <DiagnosticModule>()) { diagContainer.Register(typeof(INancyModule), moduleType, moduleType.FullName).AsMultiInstance(); } return(diagContainer); }
/// <summary> /// Initializes a new instance of the <see cref="DefaultTypeCatalog"/> class. /// </summary> /// <param name="assemblyCatalog">An <see cref="IAssemblyCatalog"/> instanced, used to get the assemblies that types should be resolved from.</param> public DefaultTypeCatalog(IAssemblyCatalog assemblyCatalog) { this.assemblyCatalog = assemblyCatalog; this.cache = new ConcurrentDictionary<Type, IReadOnlyCollection<Type>>(); }
/// <summary> /// Enables the diagnostics dashboard and will intercept all requests that are passed to /// the condigured paths. /// </summary> public static void Enable(IPipelines pipelines, IEnumerable<IDiagnosticsProvider> providers, IRootPathProvider rootPathProvider, IRequestTracing requestTracing, NancyInternalConfiguration configuration, IModelBinderLocator modelBinderLocator, IEnumerable<IResponseProcessor> responseProcessors, IEnumerable<IRouteSegmentConstraint> routeSegmentConstraints, ICultureService cultureService, IRequestTraceFactory requestTraceFactory, IEnumerable<IRouteMetadataProvider> routeMetadataProviders, ITextResource textResource, INancyEnvironment environment, ITypeCatalog typeCatalog, IAssemblyCatalog assemblyCatalog) { var diagnosticsConfiguration = environment.GetValue<DiagnosticsConfiguration>(); var diagnosticsEnvironment = GetDiagnosticsEnvironment(); var diagnosticsModuleCatalog = new DiagnosticsModuleCatalog(providers, rootPathProvider, requestTracing, configuration, diagnosticsEnvironment, typeCatalog, assemblyCatalog); var diagnosticsRouteCache = new RouteCache( diagnosticsModuleCatalog, new DefaultNancyContextFactory(cultureService, requestTraceFactory, textResource, environment), new DefaultRouteSegmentExtractor(), new DefaultRouteDescriptionProvider(), cultureService, routeMetadataProviders); var diagnosticsRouteResolver = new DefaultRouteResolver( diagnosticsModuleCatalog, new DiagnosticsModuleBuilder(rootPathProvider, modelBinderLocator, diagnosticsEnvironment, environment), diagnosticsRouteCache, new RouteResolverTrie(new TrieNodeFactory(routeSegmentConstraints)), environment); var serializer = new DefaultObjectSerializer(); pipelines.BeforeRequest.AddItemToStartOfPipeline( new PipelineItem<Func<NancyContext, Response>>( PipelineKey, ctx => { if (!ctx.ControlPanelEnabled) { return null; } if (!ctx.Request.Path.StartsWith(diagnosticsConfiguration.Path, StringComparison.OrdinalIgnoreCase)) { return null; } if (!diagnosticsConfiguration.Enabled) { return HttpStatusCode.NotFound; } ctx.Items[ItemsKey] = true; var resourcePrefix = string.Concat(diagnosticsConfiguration.Path, "/Resources/"); if (ctx.Request.Path.StartsWith(resourcePrefix, StringComparison.OrdinalIgnoreCase)) { var resourceNamespace = "Nancy.Diagnostics.Resources"; var path = Path.GetDirectoryName(ctx.Request.Url.Path.Replace(resourcePrefix, string.Empty)) ?? string.Empty; if (!string.IsNullOrEmpty(path)) { resourceNamespace += string.Format(".{0}", path.Replace(Path.DirectorySeparatorChar, '.')); } return new EmbeddedFileResponse( typeof(DiagnosticsHook).GetTypeInfo().Assembly, resourceNamespace, Path.GetFileName(ctx.Request.Url.Path)); } RewriteDiagnosticsUrl(diagnosticsConfiguration, ctx); return ValidateConfiguration(diagnosticsConfiguration) ? ExecuteDiagnostics(ctx, diagnosticsRouteResolver, diagnosticsConfiguration, serializer, diagnosticsEnvironment) : new DiagnosticsViewRenderer(ctx, environment)["help"]; })); }