class Aws::EndpointProvider

@api private

Public Class Methods

new(rules) click to toggle source
# File lib/aws-sdk-core/endpoint_provider.rb, line 5
def initialize(rules)
  @rules = rules
end

Private Class Methods

default_provider() click to toggle source
# File lib/aws-sdk-core/endpoint_provider.rb, line 98
def default_provider
  @default_provider ||= EndpointProvider.new(Partitions.defaults)
end
dns_suffix_for(region) click to toggle source
# File lib/aws-sdk-core/endpoint_provider.rb, line 92
def dns_suffix_for(region)
  default_provider.dns_suffix_for(region)
end
resolve(region, service) click to toggle source
# File lib/aws-sdk-core/endpoint_provider.rb, line 84
def resolve(region, service)
  default_provider.resolve(region, service)
end
signing_region(region, service) click to toggle source
# File lib/aws-sdk-core/endpoint_provider.rb, line 88
def signing_region(region, service)
  default_provider.signing_region(region, service)
end

Public Instance Methods

dns_suffix_for(region) click to toggle source
# File lib/aws-sdk-core/endpoint_provider.rb, line 23
def dns_suffix_for(region)
  partition = get_partition(region)
  partition['dnsSuffix']
end
resolve(region, service) click to toggle source
# File lib/aws-sdk-core/endpoint_provider.rb, line 9
def resolve(region, service)
  "https://" + endpoint_for(region, service)
end
signing_region(region, service) click to toggle source
# File lib/aws-sdk-core/endpoint_provider.rb, line 13
def signing_region(region, service)
  get_partition(region).
    fetch("services", {}).
    fetch(service, {}).
    fetch("endpoints", {}).
    fetch(region, {}).
    fetch("credentialScope", {}).
    fetch("region", region)
end

Private Instance Methods

default_endpoint(partition, service, region) click to toggle source
# File lib/aws-sdk-core/endpoint_provider.rb, line 50
def default_endpoint(partition, service, region)
  hostname_template = partition["defaults"]["hostname"]
  hostname_template.
    sub('{region}', region).
    sub('{service}', service).
    sub('{dnsSuffix}', partition["dnsSuffix"])
end
default_partition() click to toggle source
# File lib/aws-sdk-core/endpoint_provider.rb, line 77
def default_partition
  @rules['partitions'].find { |p| p["partition"] == "aws" } ||
  @rules['partitions'].first
end
endpoint_for(region, service) click to toggle source
# File lib/aws-sdk-core/endpoint_provider.rb, line 30
def endpoint_for(region, service)
  partition = get_partition(region)
  endpoint = default_endpoint(partition, service, region)
  service_cfg = partition.fetch("services", {}).fetch(service, {})

  # Check for service-level default endpoint.
  endpoint = service_cfg.fetch("defaults", {}).fetch("hostname", endpoint)

  # Check for global endpoint.
  if service_cfg["isRegionalized"] == false
    region = service_cfg.fetch("partitionEndpoint", region)
  end

  # Check for service/region level endpoint.
  endpoint = service_cfg.fetch("endpoints", {}).
    fetch(region, {}).fetch("hostname", endpoint)

  endpoint
end
get_partition(region) click to toggle source
# File lib/aws-sdk-core/endpoint_provider.rb, line 58
def get_partition(region)
  partition_containing_region(region) ||
  partition_matching_region(region) ||
  default_partition
end
partition_containing_region(region) click to toggle source
# File lib/aws-sdk-core/endpoint_provider.rb, line 64
def partition_containing_region(region)
  @rules['partitions'].find do |p|
    p['regions'].key?(region)
  end
end
partition_matching_region(region) click to toggle source
# File lib/aws-sdk-core/endpoint_provider.rb, line 70
def partition_matching_region(region)
  @rules['partitions'].find do |p|
    region.match(p["regionRegex"]) ||
    p['services'].values.find { |svc| svc['endpoints'].key?(region) }
  end
end