class TwilioLookups::REST::NextGenListResource

Public Instance Methods

list(params={}, full_path=false) click to toggle source
   # File lib/twilio-lookups/rest/next_gen_list_resource.rb
 4 def list(params={}, full_path=false)
 5   raise "Can't get a resource list without a REST Client" unless @client
 6   response = @client.get @path, params, full_path
 7   list_key = response['meta']['key']
 8   raise "Couldn't find a list key in response meta" unless list_key
 9   resources = response[list_key]
10   resource_list = resources.map do |resource|
11     @instance_class.new "#{@path}/#{resource[@instance_id_key]}", @client,
12                         resource
13   end
14   client, list_class = @client, self.class
15   resource_list.instance_eval do
16     eigenclass = class << self; self; end
17     eigenclass.send :define_method, :next_page, &lambda {
18       if response['meta']['next_page_url']
19         list_class.new(response['meta']['next_page_url'], client).list({})
20       else
21         []
22       end
23     }
24     eigenclass.send :define_method, :previous_page, &lambda {
25       if response['meta']['previous_page_url']
26         list_class.new(response['meta']['previous_page_url'], client).list({})
27       else
28         []
29       end
30     }
31   end
32   resource_list
33 end