<#@ 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"); } } }