Para buscar referências a classes proto ao usar a API, é necessário entender bem a API ou consultar com frequência a documentação de referência do proto para o caminho exato do namespace.
ProtoLookupUtil
Os métodos utilitários de pesquisa em GoogleAdsClient (com suporte de
Factories e ServiceLookup, substituindo a classe legada
ProtoLookupUtil) permitem pesquisar e criar instâncias de serviços,
operações, enumerações e recursos sem precisar acompanhar os números de versão
da API e os namespaces de módulo. Por padrão, esses métodos usam a versão mais recente da API compatível com a gem instalada (V26 na versão mais recente, em que as versões secundárias da API, como v25.1, usam o módulo de versão principal V25). Se preferir, especifique um prefixo de versão explícito (como v26) na chamada de pesquisa.
Sem o utilitário de pesquisa, você instancia um recurso de campanha diretamente do namespace com controle de versão:
campaign =
Google::Ads::GoogleAds::V26::Resources::Campaign.new
Com os métodos de pesquisa de cliente, é possível instanciar o recurso diretamente do cliente:
campaign = client.resource.campaign
Ao buscar um recurso, serviço ou operação, uma instância dessa entidade é retornada:
# Instantiate an operation
operation = client.operation.campaign
Pesquisa de serviço
Use o método client.service para buscar clientes de serviço, mesmo que você não use
esse utilitário para outras entidades. O client.service configura automaticamente suas
credenciais de autenticação e configurações de transporte no cliente de serviço
retornado:
campaign_service = client.service.campaign
Pesquisa de enumeração
Para campos de tipo enumerado em mensagens protobuf, atribua um símbolo Ruby diretamente em vez de procurar o módulo de tipo enumerado:
campaign.status = :PAUSED
Para inspecionar ou iterar todos os símbolos válidos de uma enumeração no ambiente de execução, use
client.enum, que retorna o Google::Protobuf::EnumDescriptor para esse
tipo enumerado:
status_enum = client.enum.campaign_status
status_enum.each { |status| p status }