public static IApplicationBuilder UseOwinAppBuilder(this IApplicationBuilder app, Action<IAppBuilder> configuration) { if (app == null) { throw new ArgumentNullException(nameof(app)); } if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } return app.UseOwin(setup => setup(next => { var builder = new AppBuilder(); var lifetime = (IApplicationLifetime)app.ApplicationServices.GetService(typeof(IApplicationLifetime)); var properties = new AppProperties(builder.Properties); properties.AppName = Guid.NewGuid().ToString(); properties.OnAppDisposing = lifetime.ApplicationStopping; properties.DefaultApp = next; configuration(builder); return builder.Build<Func<IDictionary<string, object>, Task>>(); })); }
public static IAppBuilder Create(IdentityServerBearerTokenAuthenticationOptions options) { IAppBuilder app = new AppBuilder(); app.SetLoggerFactory(new DiagnosticsLoggerFactory()); app.UseIdentityServerBearerTokenAuthentication(options); app.Use((context, next) => { var user = context.Authentication.User; if (user == null || user.Identity == null || !user.Identity.IsAuthenticated) { context.Response.StatusCode = 401; } else { context.Response.StatusCode = 200; } return Task.FromResult(0); }); return app; }
public static AppBuilder Create() { AppBuilder app = new AppBuilder(); var factory = new IdentityServerServiceFactory() .UseInMemoryClients(Clients.Get()) .UseInMemoryScopes(Scopes.Get()) .UseInMemoryUsers(Users.Get()); factory.CustomGrantValidators.Add(new Registration<ICustomGrantValidator, CustomGrantValidator>()); factory.CustomGrantValidators.Add(new Registration<ICustomGrantValidator, CustomGrantValidator2>()); app.UseIdentityServer(new IdentityServerOptions { EventsOptions = new EventsOptions { RaiseErrorEvents = true, RaiseFailureEvents = true, RaiseInformationEvents = true, RaiseSuccessEvents = true }, IssuerUri = "https://idsrv3", SigningCertificate = TestCert.Load(), Factory = factory }); return app; }
public void NonNullCorsRequestContext_CallsPolicyProvider() { IAppBuilder builder = new AppBuilder(); bool wasCalled = false; builder.UseCors(new CorsOptions { PolicyProvider = new CorsPolicyProvider { PolicyResolver = ctx => { wasCalled = true; return Task.FromResult<CorsPolicy>(null); } } }); builder.Run(context => { context.Response.StatusCode = 200; return Task.FromResult(0); }); var app = (AppFunc)builder.Build(typeof(AppFunc)); IOwinRequest request = CreateRequest("http://localhost/sample"); request.Headers.Set(CorsConstants.Origin, "http://test"); app(request.Environment).Wait(); var response = new OwinResponse(request.Environment); Assert.Equal(true, wasCalled); }
/// <summary> /// Initializes a new instance of the <see cref="IdentityServerBearerTokenValidationMiddleware" /> class. /// </summary> /// <param name="next">The next middleware.</param> /// <param name="options">The options.</param> /// <param name="loggerFactory">The logger factory.</param> public IdentityServerBearerTokenValidationMiddleware(AppFunc next, IdentityServerOAuthBearerAuthenticationOptions options, ILoggerFactory loggerFactory) { _next = next; _options = options; _logger = loggerFactory.Create(this.GetType().FullName); if (options.LocalValidationOptions != null) { var localBuilder = new AppBuilder(); options.OnValidationAppBuilderCreated?.Invoke(localBuilder); localBuilder.UseOAuthBearerAuthentication(options.LocalValidationOptions); localBuilder.Run(ctx => next(ctx.Environment)); _localValidationFunc = localBuilder.Build(); } if (options.EndpointValidationOptions != null) { var endpointBuilder = new AppBuilder(); options.OnValidationAppBuilderCreated?.Invoke(endpointBuilder); endpointBuilder.Properties["host.AppName"] = "foobar"; endpointBuilder.UseOAuthBearerAuthentication(options.EndpointValidationOptions); endpointBuilder.Run(ctx => next(ctx.Environment)); _endpointValidationFunc = endpointBuilder.Build(); } }
public void Configure(IApplicationBuilder app) { app.UseStaticFiles(); app.UseStatusCodePages(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller}/{action}/{id?}", defaults: new {controller = "Home", action = "Index"}); }); app.UseOwin(addToPipeline => { addToPipeline(next => { var builder = new AppBuilder(); var hubConfig = new HubConfiguration { EnableDetailedErrors = true }; builder.MapSignalR(hubConfig); var appFunc = builder.Build(typeof(Func<IDictionary<string, object>, Task>)) as Func<IDictionary<string, object>, Task>; return appFunc; }); }); }
/// <summary> /// 默认构造函数 /// </summary> public Adapter() { var builder = new AppBuilder(); var startup = new Startup(); startup.Configuration(builder); _owinApp = builder.Build(); }
static void Main(string[] args) { var appBuilder = new AppBuilder(); Nowin.OwinServerFactory.Initialize(appBuilder.Properties); appBuilder.Use<ConsoleLogMiddleware>(); appBuilder.Use<SimpleStaticFileMiddleWare>(System.IO.Path.Combine(Environment.CurrentDirectory, @"../../www")); var startup = new WebApi.Startup(); startup.Configuration(appBuilder); var builder = new Nowin.ServerBuilder(); const string ip = "127.0.0.1"; const int port = 8888; builder.SetAddress(System.Net.IPAddress.Parse(ip)).SetPort(port) .SetOwinApp(appBuilder.Build()) .SetOwinCapabilities((IDictionary<string, object>)appBuilder.Properties[Nowin.OwinKeys.ServerCapabilitiesKey]); using (var server = builder.Build()) { var serverRef = new WeakReference<Nowin.INowinServer>(server); Task.Run(() => { Nowin.INowinServer nowinServer; if (serverRef.TryGetTarget(out nowinServer)) { nowinServer.Start(); } }); var baseAddress = "http://" + ip + ":" + port + "/"; Console.WriteLine("Nowin server listening {0}, press ENTER to exit.", baseAddress); Console.ReadLine(); } }
public void Activate() { IAppBuilder appBuilder = new AppBuilder(); appBuilder.Properties["host.AppName"] = _shellSettings.Name; var orderedMiddlewares = _owinMiddlewareProviders .SelectMany(p => p.GetOwinMiddlewares()) .OrderBy(obj => obj.Priority, new FlatPositionComparer()); foreach (var middleware in orderedMiddlewares) { middleware.Configure(appBuilder); } // register the Orchard middleware after all others appBuilder.UseOrchard(); Func<IDictionary<string, object>, Task> pipeline = appBuilder.Build(); var allRoutes = new List<RouteDescriptor>(); allRoutes.AddRange(_routeProviders.SelectMany(provider => provider.GetRoutes())); allRoutes.AddRange(_httpRouteProviders.SelectMany(provider => provider.GetRoutes())); _routePublisher.Publish(allRoutes, pipeline); _modelBinderPublisher.Publish(_modelBinderProviders.SelectMany(provider => provider.GetModelBinders())); using (var scope = _workContextAccessor.CreateWorkContextScope()) { using (var events = scope.Resolve<Owned<IOrchardShellEvents>>()) { events.Value.Activated(); } } _sweepGenerator.Activate(); }
static void Main(string[] args) { var owinbuilder = new AppBuilder(); OwinServerFactory.Initialize(owinbuilder.Properties); new SampleOwinApp.Startup().Configuration(owinbuilder); var builder = ServerBuilder.New() .SetPort(8888) .SetOwinApp(owinbuilder.Build()) .SetOwinCapabilities((IDictionary<string, object>)owinbuilder.Properties[OwinKeys.ServerCapabilitiesKey]) .SetExecutionContextFlow(ExecutionContextFlow.SuppressAlways); //builder // .SetCertificate(new X509Certificate2("../../../sslcert/test.pfx", "nowin")) // .RequireClientCertificate(); var builder2 = ServerBuilder.New().SetPort(9999).SetOwinApp(owinbuilder.Build()).SetOwinCapabilities((IDictionary<string, object>)owinbuilder.Properties[OwinKeys.ServerCapabilitiesKey]); using (var server = builder.Build()) using (var server2 = builder2.Build()) { // Workaround for bug in Windows Server 2012 when ReadLine is called directly after AcceptAsync // By starting it in another thread and probably even later than calling readline it works Task.Run(() => server.Start()); Task.Run(() => server2.Start()); //using (new Timer(o => // { // var s = (INowinServer)o; // Console.WriteLine("Connections {0}/{1}", s.ConnectionCount, s.CurrentMaxConnectionCount); // }, server, 2000, 2000)) { Console.WriteLine("Listening on ports 8888 and 9999. Enter to exit."); Console.ReadLine(); } } }
public void When_Compression_Is_Added_To_The_AppBuilder_The_AppBuilder_Is_Returned() { var builder = new AppBuilder(); var returnedBuilder = builder.UseCompression(); Assert.That(returnedBuilder, Is.EqualTo(builder)); }
public void DisposeScopeOnAppDisposingDoesNothingWhenNoTokenPresent() { var app = new AppBuilder(); var scope = new TestableLifetimeScope(); // XUnit doesn't have Assert.DoesNotThrow app.DisposeScopeOnAppDisposing(scope); }
public void When_Compression_Is_Added_To_The_AppBuilder_With_Exclusions_The_AppBuilder_Is_Returned() { var builder = new AppBuilder(); var returnedBuilder = builder.UseCompression(new [] { @"application/json" }); Assert.That(returnedBuilder, Is.EqualTo(builder)); }
public void Start(Action<IAppBuilder> app, IPEndPoint endpoint) { AppBuilder appBuilder = new AppBuilder(); app(appBuilder); var builder = ServerBuilder.New().SetEndPoint(endpoint).SetOwinApp(appBuilder.Build()); //builder.SetCertificate(new X509Certificate2("certificate.pfx", "password")); webApp = builder.Start(); }
public object Configuration(IDictionary<string, object> properties) { var builder = new AppBuilder(); builder.Run(context => { return context.Response.WriteAsync("SUCCESS"); }); return builder.Build<AppFunc>(); }
public void LoadWithAssemblyName_DiscoverDefaultFactoryName() { var loader = new ServerFactoryLoader(new ServerFactoryActivator(ServicesFactory.Create())); IServerFactoryAdapter serverFactory = loader.Load("Microsoft.Owin.Hosting.Tests"); Assert.NotNull(serverFactory); IAppBuilder builder = new AppBuilder(); serverFactory.Create(builder); Assert.Equal("Microsoft.Owin.Hosting.Tests.OwinServerFactory", builder.Properties["create.server"]); }
public void LoadWithDefaults_LoadAssemblyAndDiscoverFactory(string data) { var loader = new ServerFactoryLoader(new ServerFactoryActivator(ServicesFactory.Create())); IServerFactoryAdapter serverFactory = loader.Load(data); Assert.NotNull(serverFactory); IAppBuilder builder = new AppBuilder(); serverFactory.Initialize(builder); Assert.IsType<OwinHttpListener>(builder.Properties[typeof(OwinHttpListener).FullName]); }
public void LoadWithAssemblyAndFullTypeName_Success(string data, string expected) { var loader = new ServerFactoryLoader(new ServerFactoryActivator(ServicesFactory.Create())); IServerFactoryAdapter serverFactory = loader.Load(data); Assert.NotNull(serverFactory); IAppBuilder builder = new AppBuilder(); serverFactory.Create(builder); Assert.Equal(expected, builder.Properties["create.server"]); }
public object Configuration() { var builder = new AppBuilder(); builder.Run(context => { return context.Response.WriteAsync("SUCCESS"); }); return builder.Build<AppFunc>(); }
public void UseAutofacWebApiAddsDelegatingHandler() { var app = new AppBuilder(); var configuration = new HttpConfiguration(); app.UseAutofacWebApi(configuration); Assert.That(configuration.MessageHandlers.OfType<DependencyScopeHandler>().Count(), Is.EqualTo(1)); }
public void UseAutofacWebApiWillOnlyAddDelegatingHandlerOnce() { var app = new AppBuilder(); var configuration = new HttpConfiguration(); app.UseAutofacWebApi(configuration); app.UseAutofacWebApi(configuration); Assert.Equal(1, configuration.MessageHandlers.OfType<DependencyScopeHandler>().Count()); }
public void PredicateTrue_BranchTaken() { IOwinContext context = new OwinContext(); IAppBuilder builder = new AppBuilder(); builder.MapWhen(TruePredicate, UseSuccess); var app = builder.Build<OwinMiddleware>(); app.Invoke(context).Wait(); Assert.Equal(200, context.Response.StatusCode); }
public void NullArguments_ArgumentNullException() { var builder = new AppBuilder(); var noMiddleware = new AppBuilder().Build<AppFunc>(); var noOptions = new MapOptions(); Assert.Throws<ArgumentNullException>(() => builder.Map(null, ActionNotImplemented)); Assert.Throws<ArgumentNullException>(() => builder.Map("/foo", (Action<IAppBuilder>)null)); Assert.Throws<ArgumentNullException>(() => new MapMiddleware(null, noOptions)); Assert.Throws<ArgumentNullException>(() => new MapMiddleware(noMiddleware, null)); }
protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); var appBuilder = new AppBuilder(); appBuilder.UseNancy(); var appFunc = appBuilder.Build<AppFunc>(); var settings = new CefSettings(); settings.RegisterOwinSchemeHandlerFactory("owin", appFunc); Cef.Initialize(settings); }
/// <summary> /// Initializes a new instance of the <see cref="TheaterMiddleware" /> class. /// </summary> /// <param name="theaterSettings">The histrio settings used to configure the middelware</param> internal TheaterMiddleware(TheaterSettings theaterSettings) { var controllerActivator = new TheaterControllerActivator(theaterSettings.Theater); MidFunc = next => { var app = new AppBuilder(); app.UseWebApi(GetWebApiConfiguration(controllerActivator)); app.Run(ctx => next(ctx.Environment)); return app.Build(); }; }
public void PathMatchFunc_BranchTaken(string matchPath, string basePath, string requestPath) { IOwinContext context = CreateRequest(basePath, requestPath); IAppBuilder builder = new AppBuilder(); builder.Map(matchPath, UseSuccess); var app = builder.Build<OwinMiddleware>(); app.Invoke(context); Assert.Equal(200, context.Response.StatusCode); Assert.Equal(basePath, context.Request.PathBase.Value); Assert.Equal(requestPath, context.Request.Path.Value); }
public async Task When_host_Nancy_via_IAppBuilder_should_read_X509Certificate2() { // Given var app = new AppBuilder(); var bootstrapper = new ConfigurableBootstrapper(config => config.Module<TestModule>()); var cert = @"-----BEGIN CERTIFICATE----- MIICNTCCAZ4CCQC21XwOAYG32zANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJH QjETMBEGA1UECBMKU29tZS1TdGF0ZTEOMAwGA1UEChMFTmFuY3kxDjAMBgNVBAsT BU5hbmN5MRswGQYDVQQDExJodHRwOi8vbmFuY3lmeC5vcmcwHhcNMTYwMjIyMTE1 NzQ3WhcNMTcwMjIxMTE1NzQ3WjBfMQswCQYDVQQGEwJHQjETMBEGA1UECBMKU29t ZS1TdGF0ZTEOMAwGA1UEChMFTmFuY3kxDjAMBgNVBAsTBU5hbmN5MRswGQYDVQQD ExJodHRwOi8vbmFuY3lmeC5vcmcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB AMT4vOtIH9Fzad+8KCGjMPkkVpCtn+L5H97bnI3x+y3x5lY0WRsK8FyxVshY/7fv TDeeVKUWanmbMkQjgFRYffA3ep3/AIguswYdANiNVHrx0L7DXNDcgsjRwaa6JVgQ 9iavlli0a80AF67FN1wfidlHCX53u3/fAjiSTwf7D+NBAgMBAAEwDQYJKoZIhvcN AQEFBQADgYEAh12A4NntHHdVMGaw+2umXkWqCOyAPuNhyBGUHK5vGON+VG0HPFaf 8P8eMtdF4deBHkrfoWxRuGGn2tJzNpZLiEf23BAivEf36IqwfkVP7/zDwI+bjVXC k64Un2uN8ALR/wLwfJzHfOLPtsca7ySWhlv8oZo2nk0vR34asQiGJDQ= -----END CERTIFICATE----- "; var embeddedCert = Encoding.UTF8.GetBytes(cert); app.Use(new Func<AppFunc, AppFunc>(next => (async env => { env.Add("ssl.ClientCertificate", new X509Certificate(embeddedCert)); await next.Invoke(env); }))); app.UseNancy(opts => { opts.Bootstrapper = bootstrapper; opts.EnableClientCertificates = true; }); var appFunc = app.Build(); var handler = new OwinHttpMessageHandler(appFunc); using (var httpClient = new HttpClient(handler) { BaseAddress = new Uri("http://localhost") }) { // When var response = await httpClient.GetAsync(new Uri("http://localhost/ssl")); // Then Assert.Equal(System.Net.HttpStatusCode.OK, response.StatusCode); } }
public void Invoke_DoesNotAddHeaders_WhenOriginIsMissing() { IAppBuilder builder = new AppBuilder(); builder.UseCors(CorsOptions.AllowAll); var app = (AppFunc)builder.Build(typeof(AppFunc)); IOwinRequest request = CreateRequest("http://localhost/sample"); app(request.Environment).Wait(); var response = new OwinResponse(request.Environment); Assert.Empty(response.Headers); }
public async Task ScriptFileCanBeExecutedByName() { var factory = new RoslynAppLoaderFactory(); Func<string, IList<string>, Action<IAppBuilder>> loader = factory.Create((_, __) => null); Action<IAppBuilder> startup = loader.Invoke("Simple.csx", null); var builder = new AppBuilder(); startup.Invoke(builder); var app = builder.Build<OwinMiddleware>(); IOwinContext context = new OwinContext(); await app.Invoke(context); context.Response.StatusCode.ShouldBe(24601); }
private static HttpClient CreateHttpClient(Func<TimeSpan> getMinDelay) { var app = new AppBuilder(); app.MinResponseDelay(getMinDelay) .Use((context, _) => { context.Response.StatusCode = 200; context.Response.ReasonPhrase = "OK"; return Task.FromResult(0); }); return new HttpClient(new OwinHttpMessageHandler(app.Build())); }