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