module Aws::Endpoints::Templater

This class is deprecated. It is used by the Runtime endpoint resolution approach. It has been replaced by a code generated approach in each service gem. It can be removed in a new major version. It has to exist because old service gems can use a new core version. @api private

Public Class Methods

resolve(string, parameters, assigns) click to toggle source
# File lib/aws-sdk-core/endpoints/templater.rb, line 15
def resolve(string, parameters, assigns)
  # scans for strings in curly brackets {}
  string.scan(/\{.+?\}/).each do |capture|
    value = capture[1..-2] # strips curly brackets
    string = string.gsub(capture, replace(value, parameters, assigns))
  end
  string
end

Private Class Methods

extract_value(key, parameters, assigns) click to toggle source

Checks both parameters and assigns hash for the referenced value

# File lib/aws-sdk-core/endpoints/templater.rb, line 45
def extract_value(key, parameters, assigns)
  if assigns.key?(key)
    assigns[key]
  elsif parameters.class.singleton_class::PARAM_MAP.key?(key)
    member_name = parameters.class.singleton_class::PARAM_MAP[key]
    parameters[member_name]
  else
    raise "Templatable value not found: #{key}"
  end
end
replace(capture, parameters, assigns) click to toggle source

Replaces the captured value with values from parameters or assign

# File lib/aws-sdk-core/endpoints/templater.rb, line 27
def replace(capture, parameters, assigns)
  # Pound sigil is used for getAttr calls
  indexes = capture.split('#')

  # no sigil found, just do substitution
  if indexes.size == 1
    extract_value(capture, parameters, assigns)
  # sigil was found, need to call getAttr
  elsif indexes.size == 2
    ref, property = indexes
    param = extract_value(ref, parameters, assigns)
    Matchers.attr(param, property)
  else
    raise "Invalid templatable value: #{capture}"
  end
end