Утилита поиска

Чтобы получать ссылки на классы proto при использовании API, нужно либо хорошо разбираться в API, либо часто искать в справочной документации по proto точный путь к пространству имен.

ProtoLookupUtil

Методы поиска в GoogleAdsClient (на основе Factories и ServiceLookup, заменяющие устаревший класс ProtoLookupUtil) позволяют искать и создавать экземпляры сервисов, операций, перечислений и ресурсов, не отслеживая номера версий API и пространства имен модулей. По умолчанию эти методы используют самую новую версию API, поддерживаемую установленным пакетом gem (V26 в последнем выпуске, где в неосновных выпусках API, например v25.1, используется модуль основной версии V25). Вы также можете указать явный префикс версии (например, v26) в вызове поиска.

Без утилиты поиска вы можете создать экземпляр ресурса кампании непосредственно из пространства имен с указанием версии:

campaign =
  Google::Ads::GoogleAds::V26::Resources::Campaign.new

При использовании методов поиска клиентов вы можете создать экземпляр ресурса непосредственно из клиента:

campaign = client.resource.campaign

При получении ресурса, сервиса или операции возвращается экземпляр этого объекта:

# Instantiate an operation
operation = client.operation.campaign

Поиск сервиса

Используйте метод client.service, чтобы получить клиентов сервиса, даже если вы не используете эту утилиту для других объектов. client.service автоматически настраивает учетные данные для аутентификации и параметры транспорта в возвращенном клиенте сервиса:

campaign_service = client.service.campaign

Поиск перечисления

Для полей перечисления в сообщениях protobuf назначайте символ Ruby напрямую, а не через модуль перечисления:

campaign.status = :PAUSED

Чтобы проверить или перебрать все допустимые символы для перечисления во время выполнения, используйте client.enum, который возвращает Google::Protobuf::EnumDescriptor для этого перечисления:

status_enum = client.enum.campaign_status
status_enum.each { |status| p status }