#@ template language="C#" inherits="BaseGenerator" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="ServiceClientGenerator.Endpoints" #>
<#
AddLicenseHeader();
#>
using System;
using System.Collections.Generic;
using Amazon.Runtime;
using Amazon.Runtime.Endpoints;
using static Amazon.Runtime.Internal.Endpoints.StandardLibrary.Fn;
namespace <#=this.Config.Namespace#>.Internal
{
///
/// Amazon <#=this.Config.ClassName#> endpoint provider.
/// Resolves endpoint for given set of <#=this.Config.ClassName#>EndpointParameters.
/// Can throw AmazonClientException if endpoint resolution is unsuccessful.
///
public class Amazon<#=this.Config.ClassName#>EndpointProvider : IEndpointProvider
{
///
/// Resolve endpoint for <#=this.Config.ClassName#>EndpointParameters
///
public Endpoint ResolveEndpoint(EndpointParameters parameters)
{
if (parameters == null)
throw new ArgumentNullException("parameters");
<# foreach(var param in this.Config.EndpointsRuleSet.parameters) {
if (param.Value.required) {
#>
if (parameters["<#=param.Key#>"] == null)
throw new AmazonClientException("<#=param.Key#> parameter must be set for endpoint resolution");
<# }} #>
var refs = new Dictionary()
{
<# foreach(var param in this.Config.EndpointsRuleSet.parameters) { #>
["<#=param.Key#>"] = parameters["<#=param.Key#>"],
<# } #>
};
<#=CodeGen.GenerateRules(this.Config.EndpointsRuleSet)#>
throw new AmazonClientException("Cannot resolve endpoint");
}
}
}