class Gapic::ResourceLookup

TODO: Enter docs Dooooooooocs!!!

Public Class Methods

for_service(service) click to toggle source

Lookup all resources for a given service.

@param service [Gapic::Service] The service to lookup on.

@return [Array<Google::Api::ResourceDescriptor>]

# File lib/gapic/resource_lookup.rb, line 72
def self.for_service service
  ResourceLookup.new(service).lookup!
end
new(service) click to toggle source

@private

# File lib/gapic/resource_lookup.rb, line 22
def initialize service
  @service = service
  @api = service.parent.parent
end

Public Instance Methods

lookup!() click to toggle source

@private

# File lib/gapic/resource_lookup.rb, line 28
def lookup!
  resources = []
  @service.methods.each do |method|
    resources.concat resources_for_message(method.input)
    resources.concat resources_for_message(method.output) if @api.generate_path_helpers_output?
  end
  resources.uniq
end
resources_for_message(message, seen_messages = []) click to toggle source

@private

# File lib/gapic/resource_lookup.rb, line 38
def resources_for_message message, seen_messages = []
  resources = []
  return resources if seen_messages.include? message
  seen_messages << message
  resources << message.resource if message.resource
  message.nested_messages.each do |nested_message|
    resources.concat resources_for_message(nested_message, seen_messages)
  end
  message.fields.each do |field|
    resources.concat resources_for_reference(field.resource_reference) if field.resource_reference
    resources.concat resources_for_message(field.message, seen_messages) if field.message?
  end
  resources
end
resources_for_reference(reference) click to toggle source

@private Given a reference (either a type or child type), return the corresponding resources.

# File lib/gapic/resource_lookup.rb, line 56
def resources_for_reference reference
  if (type = reference.type) && !type.empty?
    Array(@api.lookup_resource_type(type))
  elsif (child_type = reference.child_type) && !child_type.empty?
    child_resource = @api.lookup_resource_type child_type
    child_resource ? child_resource.parent_resources : []
  else
    []
  end
end