Ruby

Google предоставляет клиентскую библиотеку Ruby для взаимодействия с Ad Manager API. Мы рекомендуем использовать клиентскую библиотеку с RubyGems.

Для начала создайте новый проект в выбранной вами IDE или добавьте зависимость в существующий проект. Google публикует клиентскую библиотеку в RubyGems как google-ads-ad_manager.

Gemfile

gem 'google-ads-ad_manager', '~> 5.4.0'

Командная строка

gem install google-ads-ad_manager

Как настроить учетные данные

Клиентская библиотека Ruby использует для аутентификации OAuth2 и Application Default Credentials (ADC).

ADC выполняет поиск учетных данных в следующем порядке:

  1. переменной среды GOOGLE_APPLICATION_CREDENTIALS.
  2. Учетные данные пользователя, настроенные с помощью интерфейса командной строки Google Cloud (gcloud CLI).
  3. При работе в Google Cloud – сервисный аккаунт, прикрепленный к ресурсу Google Cloud.

Инструкции по созданию и настройке учетных данных ADC приведены в статье Аутентификация.

Как отправить первый запрос

Каждому сервису REST соответствует класс Ruby с методами для каждого соответствующего метода REST. В примере ниже считывается Network.

require "google/ads/ad_manager/v1"

def get_network
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Ads::AdManager::V1::NetworkService::Rest::Client.new

  # Create a request. To set request fields, pass in keyword arguments.
  request = Google::Ads::AdManager::V1::GetNetworkRequest.new(name: => 'networks/NETWORK_CODE)'

  # Call the get_network method.
  result = client.get_network request

  # The returned object is of type Google::Ads::AdManager::V1::Network.
  p result
end

Примеры других методов и ресурсов можно найти в репозитории GitHub: googleapis/google-cloud-ruby.

Как регистрировать HTTP-запросы и ответы

Клиентская библиотека Ruby использует стандартную библиотеку logger для регистрации HTTP-запросов и ответов. По умолчанию ведение журнала отключено.

Чтобы включить ведение журнала, задайте для переменной среды GOOGLE_SDK_RUBY_LOGGING_GEMS значение google-ads-ad_manager. Если вы используете несколько API Google, укажите в качестве значения список названий гемов клиентских библиотек, разделенных запятыми. По умолчанию журналы записываются в стандартный вывод ошибок.

Вы также можете включить ведение журнала в коде Ruby, изменив конфигурацию logger при создании клиентского объекта.

require "google/ads/ad_manager/v1"
require "logger"

client = ::Google::Ads::AdManager::V1::NetworkService::Rest::Client.new do |config|
  config.logger = Logger.new "my-app.log"
end

Обработка ошибок

Все ошибки Ad Manager API являются подклассами ::Google::Cloud::Error в клиентской библиотеке Ruby.

result = client.get_network request
rescue ::Google::Cloud::Error => e
  puts "An error of type #{e.class} occurred with HTTP status #{e.status_code}"

Ошибки Ad Manager API также содержат уникальный request_id, который можно предоставить службе поддержки для устранения неполадок. В следующем примере из ошибки details извлекается значение request_id.

rescue ::Google::Cloud::Error => e
  request_info = e.details.find { |detail| detail.is_a?(Google::Rpc::RequestInfo)}
  puts request_info.request_id

Как создавать названия ресурсов

Клиентская библиотека предоставляет вспомогательные классы для создания названий ресурсов на основе идентификаторов.

require "google/ads/ad_manager/v1"

#  Constructs a String in the format:
#  "networks/{networkCode}/orders/{orderId}"
order_name = Google::Ads::AdManager::V1::OrderService::Paths::order_path(:network_code => 123, :order => 456)

Настройка прокси-сервера

Клиентская библиотека Ruby поддерживает переменные среды HTTP_PROXY и HTTPS_PROXY.