Sha256: e5565be6bddaa4d7f5d1fdffab98fd5067f599645dc303c273315d28ef34488c
Contents?: true
Size: 1.34 KB
Versions: 2
Compression:
Stored size: 1.34 KB
Contents
module ZendeskAPI module Sideloading def self.included(klass) klass.send(:attr_reader, :included) end def set_includes(resource_or_resources, includes, body) @included = {} includes.each do |side_load| unless body.key?(side_load.to_s) @client.config.logger.warn "Missing #{side_load} key in response -- cannot side load" end end resources = [resource_or_resources].flatten.compact resource_class = resources.first.class return if resources.empty? body.keys.each do |name| @included[name] = body[name] _side_load(name, resource_class, resources) end end private # Traverses the resource looking for associations # then descends into those associations and checks for applicable # resources to side load def _side_load(name, klass, resources) associations = klass.associated_with(name) associations.each do |association| association.side_load(resources, @included[name]) end resources.each do |resource| loaded_associations = resource.loaded_associations loaded_associations.each do |association| loaded = resource.send(association[:name]) next unless loaded _side_load(name, association[:class], [loaded].flatten) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
zendesk_api-0.1.7 | lib/zendesk_api/sideloading.rb |
zendesk_api-0.1.6 | lib/zendesk_api/sideloading.rb |