class Google::Ads::GoogleAds::ServiceLookup

Attributes

config[R]
credentials_or_channel[R]
deprecator[R]
endpoint[R]
logger[R]
lookup_util[R]
name[R]
version[R]

Public Class Methods

new( lookup_util, logger, config, credentials_or_channel, endpoint, deprecator ) click to toggle source
# File lib/google/ads/google_ads/service_lookup.rb, line 8
def initialize(
  lookup_util,
  logger,
  config,
  credentials_or_channel,
  endpoint,
  deprecator
)
  @lookup_util = lookup_util
  @logger = logger
  @config = config
  @credentials_or_channel = credentials_or_channel
  @endpoint = endpoint
  @deprecator = deprecator
end

Public Instance Methods

call() click to toggle source
# File lib/google/ads/google_ads/service_lookup.rb, line 24
def call
  if logger
    logging_interceptor = GoogleAds::Interceptors::LoggingInterceptor.new(logger)
  end
  error_interceptor = GoogleAds::Interceptors::ErrorInterceptor.new

  version_alternates = {}
  Factories::VERSIONS.each do |v|
    version_alternates[v] = factory_at_version(v, error_interceptor, logging_interceptor)
  end

  highest_factory = factory_at_version(
    Factories::HIGHEST_VERSION,
    error_interceptor,
    logging_interceptor,
  )

  VersionAlternate.new(highest_factory, version_alternates)
end

Private Instance Methods

factory_at_version(version, error_interceptor, logging_interceptor) click to toggle source
# File lib/google/ads/google_ads/service_lookup.rb, line 46
def factory_at_version(version, error_interceptor, logging_interceptor)
  factory = Factories.at_version(version).services.new(**{
    logging_interceptor: logging_interceptor,
    error_interceptor: error_interceptor,
    deprecation: deprecator
  }.merge(gax_service_params))

  factory
end
gax_service_params() click to toggle source
# File lib/google/ads/google_ads/service_lookup.rb, line 56
def gax_service_params
  {
    credentials: credentials_or_channel,
    metadata: headers,
    endpoint: endpoint
  }
end
headers() click to toggle source
# File lib/google/ads/google_ads/service_lookup.rb, line 64
def headers
  headers = {
    :"developer-token" => config.developer_token
  }

  if config.login_customer_id
    validate_customer_id(:login_customer_id)
    # header values must be strings
    headers[:"login-customer-id"] = config.login_customer_id.to_s
  end

  if config.linked_customer_id
    validate_customer_id(:linked_customer_id)
    # header values must be strings
    headers[:"linked-customer-id"] = config.linked_customer_id.to_s
  end

  headers
end
validate_customer_id(field) click to toggle source
# File lib/google/ads/google_ads/service_lookup.rb, line 84
def validate_customer_id(field)
  begin
    customer_id = -1
    if field == :login_customer_id
      customer_id = Integer(config.login_customer_id)
    elsif field == :linked_customer_id
      customer_id = Integer(config.linked_customer_id)
    else
      return
    end
  rescue ArgumentError => e
    if e.message.start_with?("invalid value for Integer")
      raise ArgumentError.new("Invalid value for #{field.to_s}, must be integer")
    end
  end
  if customer_id <= 0 || customer_id > 9_999_999_999
    raise ArgumentError.new(
      "Invalid #{field.to_s}. Must be an integer " \
      "0 < x <= 9,999,999,999. Got #{customer_id}"
    )
  end
end