diff --git a/src/Microsoft.AspNet.Cors.Core/CorsOptions.cs b/src/Microsoft.AspNet.Cors.Core/CorsOptions.cs index b460d65c20..27fe79aee8 100644 --- a/src/Microsoft.AspNet.Cors.Core/CorsOptions.cs +++ b/src/Microsoft.AspNet.Cors.Core/CorsOptions.cs @@ -3,8 +3,6 @@ using System; using System.Collections.Generic; -using Microsoft.AspNet.Cors.Core; -using Microsoft.Framework.Internal; namespace Microsoft.AspNet.Cors.Core { @@ -22,10 +20,13 @@ namespace Microsoft.AspNet.Cors.Core { return _defaultPolicyName; } - - [param: NotNull] set { + if (value == null) + { + throw new ArgumentNullException(nameof(value)); + } + _defaultPolicyName = value; } } @@ -35,8 +36,18 @@ namespace Microsoft.AspNet.Cors.Core /// /// The name of the policy. /// The policy to be added. - public void AddPolicy([NotNull] string name, [NotNull] CorsPolicy policy) + public void AddPolicy(string name, CorsPolicy policy) { + if (name == null) + { + throw new ArgumentNullException(nameof(name)); + } + + if (policy == null) + { + throw new ArgumentNullException(nameof(policy)); + } + PolicyMap[name] = policy; } @@ -45,8 +56,18 @@ namespace Microsoft.AspNet.Cors.Core /// /// The name of the policy. /// A delegate which can use a policy builder to build a policy. - public void AddPolicy([NotNull] string name, [NotNull] Action configurePolicy) + public void AddPolicy(string name, Action configurePolicy) { + if (name == null) + { + throw new ArgumentNullException(nameof(name)); + } + + if (configurePolicy == null) + { + throw new ArgumentNullException(nameof(configurePolicy)); + } + var policyBuilder = new CorsPolicyBuilder(); configurePolicy(policyBuilder); PolicyMap[name] = policyBuilder.Build(); @@ -57,8 +78,13 @@ namespace Microsoft.AspNet.Cors.Core /// /// The name of the policy to lookup. /// The if the policy was added.null otherwise. - public CorsPolicy GetPolicy([NotNull] string name) + public CorsPolicy GetPolicy(string name) { + if (name == null) + { + throw new ArgumentNullException(nameof(name)); + } + return PolicyMap.ContainsKey(name) ? PolicyMap[name] : null; } } diff --git a/src/Microsoft.AspNet.Cors.Core/CorsPolicyBuilder.cs b/src/Microsoft.AspNet.Cors.Core/CorsPolicyBuilder.cs index 9a5c409f77..99c1a0b795 100644 --- a/src/Microsoft.AspNet.Cors.Core/CorsPolicyBuilder.cs +++ b/src/Microsoft.AspNet.Cors.Core/CorsPolicyBuilder.cs @@ -4,7 +4,6 @@ using System; using System.Linq; using Microsoft.AspNet.Cors.Core; -using Microsoft.Framework.Internal; namespace Microsoft.AspNet.Cors { @@ -171,8 +170,13 @@ namespace Microsoft.AspNet.Cors /// /// The policy which needs to be combined. /// The current policy builder - private CorsPolicyBuilder Combine([NotNull] CorsPolicy policy) + private CorsPolicyBuilder Combine(CorsPolicy policy) { + if (policy == null) + { + throw new ArgumentNullException(nameof(policy)); + } + WithOrigins(policy.Origins.ToArray()); WithHeaders(policy.Headers.ToArray()); WithExposedHeaders(policy.ExposedHeaders.ToArray()); diff --git a/src/Microsoft.AspNet.Cors.Core/CorsService.cs b/src/Microsoft.AspNet.Cors.Core/CorsService.cs index f9a2d6ea8e..de4a1cd8fc 100644 --- a/src/Microsoft.AspNet.Cors.Core/CorsService.cs +++ b/src/Microsoft.AspNet.Cors.Core/CorsService.cs @@ -6,7 +6,6 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; using Microsoft.AspNet.Http; -using Microsoft.Framework.Internal; using Microsoft.Framework.OptionsModel; using Microsoft.Framework.Primitives; @@ -23,8 +22,13 @@ namespace Microsoft.AspNet.Cors.Core /// Creates a new instance of the . /// /// The option model representing . - public CorsService([NotNull] IOptions options) + public CorsService(IOptions options) { + if (options == null) + { + throw new ArgumentNullException(nameof(options)); + } + _options = options.Value; } @@ -36,15 +40,30 @@ namespace Microsoft.AspNet.Cors.Core /// /// A which contains the result of policy evaluation and can be /// used by the caller to set appropriate response headers. - public CorsResult EvaluatePolicy([NotNull] HttpContext context, string policyName) + public CorsResult EvaluatePolicy(HttpContext context, string policyName) { + if (context == null) + { + throw new ArgumentNullException(nameof(context)); + } + var policy = _options.GetPolicy(policyName); return EvaluatePolicy(context, policy); } /// - public CorsResult EvaluatePolicy([NotNull] HttpContext context, [NotNull] CorsPolicy policy) + public CorsResult EvaluatePolicy(HttpContext context, CorsPolicy policy) { + if (context == null) + { + throw new ArgumentNullException(nameof(context)); + } + + if (policy == null) + { + throw new ArgumentNullException(nameof(policy)); + } + var corsResult = new CorsResult(); var accessControlRequestMethod = context.Request.Headers[CorsConstants.AccessControlRequestMethod]; if (string.Equals(context.Request.Method, CorsConstants.PreflightHttpMethod, StringComparison.Ordinal) && @@ -113,6 +132,16 @@ namespace Microsoft.AspNet.Cors.Core /// public virtual void ApplyResult(CorsResult result, HttpResponse response) { + if (result == null) + { + throw new ArgumentNullException(nameof(result)); + } + + if (response == null) + { + throw new ArgumentNullException(nameof(response)); + } + var headers = response.Headers; if (result.AllowedOrigin != null) diff --git a/src/Microsoft.AspNet.Cors.Core/CorsServiceCollectionExtensions.cs b/src/Microsoft.AspNet.Cors.Core/CorsServiceCollectionExtensions.cs index d22dd2c855..e46363ad97 100644 --- a/src/Microsoft.AspNet.Cors.Core/CorsServiceCollectionExtensions.cs +++ b/src/Microsoft.AspNet.Cors.Core/CorsServiceCollectionExtensions.cs @@ -2,11 +2,8 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using Microsoft.AspNet.Cors; using Microsoft.AspNet.Cors.Core; -using Microsoft.Framework.Configuration; using Microsoft.Framework.DependencyInjection.Extensions; -using Microsoft.Framework.Internal; namespace Microsoft.Framework.DependencyInjection { @@ -22,9 +19,19 @@ namespace Microsoft.Framework.DependencyInjection /// A delegate which is run to configure the services. /// public static IServiceCollection ConfigureCors( - [NotNull] this IServiceCollection serviceCollection, - [NotNull] Action configure) + this IServiceCollection serviceCollection, + Action configure) { + if (serviceCollection == null) + { + throw new ArgumentNullException(nameof(serviceCollection)); + } + + if (configure == null) + { + throw new ArgumentNullException(nameof(configure)); + } + return serviceCollection.Configure(configure); } diff --git a/src/Microsoft.AspNet.Cors.Core/DefaultCorsPolicyProvider.cs b/src/Microsoft.AspNet.Cors.Core/DefaultCorsPolicyProvider.cs index e5ee17294f..188b8930fe 100644 --- a/src/Microsoft.AspNet.Cors.Core/DefaultCorsPolicyProvider.cs +++ b/src/Microsoft.AspNet.Cors.Core/DefaultCorsPolicyProvider.cs @@ -1,9 +1,9 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System; using System.Threading.Tasks; using Microsoft.AspNet.Http; -using Microsoft.Framework.Internal; using Microsoft.Framework.OptionsModel; namespace Microsoft.AspNet.Cors.Core @@ -25,6 +25,11 @@ namespace Microsoft.AspNet.Cors.Core /// public Task GetPolicyAsync(HttpContext context, string policyName) { + if (context == null) + { + throw new ArgumentNullException(nameof(context)); + } + return Task.FromResult(_options.GetPolicy(policyName ?? _options.DefaultPolicyName)); } } diff --git a/src/Microsoft.AspNet.Cors.Core/ICorsPolicyProvider.cs b/src/Microsoft.AspNet.Cors.Core/ICorsPolicyProvider.cs index bc92954e9f..fa13aab7e4 100644 --- a/src/Microsoft.AspNet.Cors.Core/ICorsPolicyProvider.cs +++ b/src/Microsoft.AspNet.Cors.Core/ICorsPolicyProvider.cs @@ -3,7 +3,6 @@ using System.Threading.Tasks; using Microsoft.AspNet.Http; -using Microsoft.Framework.Internal; namespace Microsoft.AspNet.Cors.Core { @@ -18,6 +17,6 @@ namespace Microsoft.AspNet.Cors.Core /// The associated with this call. /// An optional policy name to look for. /// A - Task GetPolicyAsync([NotNull] HttpContext context, string policyName); + Task GetPolicyAsync(HttpContext context, string policyName); } } \ No newline at end of file diff --git a/src/Microsoft.AspNet.Cors.Core/ICorsService.cs b/src/Microsoft.AspNet.Cors.Core/ICorsService.cs index 5259e13493..3c94859856 100644 --- a/src/Microsoft.AspNet.Cors.Core/ICorsService.cs +++ b/src/Microsoft.AspNet.Cors.Core/ICorsService.cs @@ -2,7 +2,6 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using Microsoft.AspNet.Http; -using Microsoft.Framework.Internal; namespace Microsoft.AspNet.Cors.Core { @@ -18,7 +17,7 @@ namespace Microsoft.AspNet.Cors.Core /// The which needs to be evaluated. /// A which contains the result of policy evaluation and can be /// used by the caller to set apporpriate response headers. - CorsResult EvaluatePolicy([NotNull] HttpContext context, [NotNull] CorsPolicy policy); + CorsResult EvaluatePolicy(HttpContext context, CorsPolicy policy); /// @@ -26,7 +25,7 @@ namespace Microsoft.AspNet.Cors.Core /// /// The used to read the allowed values. /// The associated with the current call. - void ApplyResult([NotNull] CorsResult result, [NotNull] HttpResponse response); + void ApplyResult(CorsResult result, HttpResponse response); } } \ No newline at end of file diff --git a/src/Microsoft.AspNet.Cors.Core/project.json b/src/Microsoft.AspNet.Cors.Core/project.json index 48b267a114..6962c1be73 100644 --- a/src/Microsoft.AspNet.Cors.Core/project.json +++ b/src/Microsoft.AspNet.Cors.Core/project.json @@ -8,19 +8,11 @@ "Microsoft.AspNet.Http.Extensions": "1.0.0-*", "Microsoft.Framework.Configuration.Abstractions": "1.0.0-*", "Microsoft.Framework.DependencyInjection.Abstractions": "1.0.0-*", - "Microsoft.Framework.NotNullAttribute.Sources": { "version": "1.0.0-*", "type": "build" }, "Microsoft.Framework.OptionsModel": "1.0.0-*" }, "frameworks" : { - "dnx451" : { - "dependencies": { - } - }, - "dnxcore50" : { - "dependencies": { - "System.Runtime": "4.0.21-beta-*" - } - } + "dnx451" : { }, + "dnxcore50" : { } } } diff --git a/src/Microsoft.AspNet.Cors/CorsMiddleware.cs b/src/Microsoft.AspNet.Cors/CorsMiddleware.cs index a0ef8c2ff1..cccac69fec 100644 --- a/src/Microsoft.AspNet.Cors/CorsMiddleware.cs +++ b/src/Microsoft.AspNet.Cors/CorsMiddleware.cs @@ -6,7 +6,6 @@ using System.Threading.Tasks; using Microsoft.AspNet.Builder; using Microsoft.AspNet.Cors.Core; using Microsoft.AspNet.Http; -using Microsoft.Framework.Internal; using Microsoft.Framework.Primitives; namespace Microsoft.AspNet.Cors @@ -30,11 +29,26 @@ namespace Microsoft.AspNet.Cors /// A policy provider which can get an . /// An optional name of the policy to be fetched. public CorsMiddleware( - [NotNull] RequestDelegate next, - [NotNull] ICorsService corsService, - [NotNull] ICorsPolicyProvider policyProvider, + RequestDelegate next, + ICorsService corsService, + ICorsPolicyProvider policyProvider, string policyName) { + if (next == null) + { + throw new ArgumentNullException(nameof(next)); + } + + if (corsService == null) + { + throw new ArgumentNullException(nameof(corsService)); + } + + if (policyProvider == null) + { + throw new ArgumentNullException(nameof(policyProvider)); + } + _next = next; _corsService = corsService; _corsPolicyProvider = policyProvider; @@ -48,10 +62,25 @@ namespace Microsoft.AspNet.Cors /// An instance of . /// An instance of the which can be applied. public CorsMiddleware( - [NotNull] RequestDelegate next, - [NotNull] ICorsService corsService, - [NotNull] CorsPolicy policy) + RequestDelegate next, + ICorsService corsService, + CorsPolicy policy) { + if (next == null) + { + throw new ArgumentNullException(nameof(next)); + } + + if (corsService == null) + { + throw new ArgumentNullException(nameof(corsService)); + } + + if (policy == null) + { + throw new ArgumentNullException(nameof(policy)); + } + _next = next; _corsService = corsService; _policy = policy; @@ -68,7 +97,7 @@ namespace Microsoft.AspNet.Cors var corsResult = _corsService.EvaluatePolicy(context, corsPolicy); _corsService.ApplyResult(corsResult, context.Response); - var accessControlRequestMethod = + var accessControlRequestMethod = context.Request.Headers[CorsConstants.AccessControlRequestMethod]; if (string.Equals( context.Request.Method, diff --git a/src/Microsoft.AspNet.Cors/CorsMiddlewareExtensions.cs b/src/Microsoft.AspNet.Cors/CorsMiddlewareExtensions.cs index a66484a475..b92a22180e 100644 --- a/src/Microsoft.AspNet.Cors/CorsMiddlewareExtensions.cs +++ b/src/Microsoft.AspNet.Cors/CorsMiddlewareExtensions.cs @@ -2,10 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using System.Threading.Tasks; using Microsoft.AspNet.Cors; -using Microsoft.AspNet.Cors.Core; -using Microsoft.Framework.Internal; namespace Microsoft.AspNet.Builder { @@ -20,8 +17,13 @@ namespace Microsoft.AspNet.Builder /// The IApplicationBuilder passed to your Configure method /// The policy name of a configured policy. /// The original app parameter - public static IApplicationBuilder UseCors([NotNull]this IApplicationBuilder app, string policyName) + public static IApplicationBuilder UseCors(this IApplicationBuilder app, string policyName) { + if (app == null) + { + throw new ArgumentNullException(nameof(app)); + } + return app.UseMiddleware(policyName); } @@ -32,9 +34,19 @@ namespace Microsoft.AspNet.Builder /// A delegate which can use a policy builder to build a policy. /// The original app parameter public static IApplicationBuilder UseCors( - [NotNull] this IApplicationBuilder app, - [NotNull] Action configurePolicy) + this IApplicationBuilder app, + Action configurePolicy) { + if (app == null) + { + throw new ArgumentNullException(nameof(app)); + } + + if (configurePolicy == null) + { + throw new ArgumentNullException(nameof(configurePolicy)); + } + var policyBuilder = new CorsPolicyBuilder(); configurePolicy(policyBuilder); return app.UseMiddleware(policyBuilder.Build()); diff --git a/src/Microsoft.AspNet.Cors/project.json b/src/Microsoft.AspNet.Cors/project.json index 9d0567f960..0a77b75df6 100644 --- a/src/Microsoft.AspNet.Cors/project.json +++ b/src/Microsoft.AspNet.Cors/project.json @@ -5,19 +5,11 @@ "url": "https://github.com/aspnet/cors" }, "dependencies": { - "Microsoft.AspNet.Cors.Core": "1.0.0-*", - "Microsoft.Framework.NotNullAttribute.Sources": { "version": "1.0.0-*", "type": "build" } + "Microsoft.AspNet.Cors.Core": "1.0.0-*" }, "frameworks" : { - "dnx451" : { - "dependencies": { - } - }, - "dnxcore50" : { - "dependencies": { - "System.Runtime": "4.0.21-beta-*" - } - } + "dnx451" : { }, + "dnxcore50" : { } } }