69 lines
2.3 KiB
C#
69 lines
2.3 KiB
C#
// Copyright (c) Microsoft Open Technologies, Inc. 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.Collections.Generic;
|
|
using Microsoft.AspNet.Cors.Core;
|
|
using Microsoft.Framework.Internal;
|
|
|
|
namespace Microsoft.AspNet.Cors.Core
|
|
{
|
|
/// <summary>
|
|
/// Provides programmatic configuration for Cors.
|
|
/// </summary>
|
|
public class CorsOptions
|
|
{
|
|
private string _defaultPolicyName = "__DefaultCorsPolicy";
|
|
private IDictionary<string, CorsPolicy> PolicyMap { get; } = new Dictionary<string, CorsPolicy>();
|
|
|
|
public string DefaultPolicyName
|
|
{
|
|
get
|
|
{
|
|
return _defaultPolicyName;
|
|
}
|
|
|
|
set
|
|
{
|
|
if (value == null)
|
|
{
|
|
throw new ArgumentNullException("value");
|
|
}
|
|
|
|
_defaultPolicyName = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Adds a new policy.
|
|
/// </summary>
|
|
/// <param name="name">The name of the policy.</param>
|
|
/// <param name="policy">The <see cref="CorsPolicy"/> policy to be added.</param>
|
|
public void AddPolicy([NotNull] string name, [NotNull] CorsPolicy policy)
|
|
{
|
|
PolicyMap[name] = policy;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Adds a new policy.
|
|
/// </summary>
|
|
/// <param name="name">The name of the policy.</param>
|
|
/// <param name="configurePolicy">A delegate which can use a policy builder to build a policy.</param>
|
|
public void AddPolicy([NotNull] string name, [NotNull] Action<CorsPolicyBuilder> configurePolicy)
|
|
{
|
|
var policyBuilder = new CorsPolicyBuilder();
|
|
configurePolicy(policyBuilder);
|
|
PolicyMap[name] = policyBuilder.Build();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the policy based on the <paramref name="name"/>
|
|
/// </summary>
|
|
/// <param name="name">The name of the policy to lookup.</param>
|
|
/// <returns>The <see cref="CorsPolicy"/> if the policy was added.<c>null</c> otherwise.</returns>
|
|
public CorsPolicy GetPolicy([NotNull] string name)
|
|
{
|
|
return PolicyMap.ContainsKey(name) ? PolicyMap[name] : null;
|
|
}
|
|
}
|
|
} |