Sha256: 98af9b613c9134979a1e5527156dfd6d48f68a588ceb4b59b7fe9f55080e9691

Contents?: true

Size: 1.03 KB

Versions: 4

Compression:

Stored size: 1.03 KB

Contents

module Twilio
  module REST
    class NextGenListResource < Twilio::REST::ListResource
      def list(params={}, full_path=false)
        raise "Can't get a resource list without a REST Client" unless @client
        response = @client.get @path, params, full_path
        list_key = response['meta']['key']
        raise "Couldn't find a list key in response meta" unless list_key
        resources = response[list_key]
        resource_list = resources.map do |resource|
          @instance_class.new "#{@path}/#{resource[@instance_id_key]}", @client,
                              resource
        end
        client, list_class = @client, self.class
        resource_list.instance_eval do
          eigenclass = class << self; self; end
          eigenclass.send :define_method, :next_page, &lambda {
            if response['meta']['next_page_url']
              list_class.new(response['meta']['next_page_url'], client).list({})
            else
              []
            end
          }
        end
        resource_list
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
twilio-ruby-3.16.1 lib/twilio-ruby/rest/next_gen_list_resource.rb
twilio-ruby-3.16.0 lib/twilio-ruby/rest/next_gen_list_resource.rb
twilio-ruby-3.15.2 lib/twilio-ruby/rest/next_gen_list_resource.rb
twilio-ruby-3.15.1 lib/twilio-ruby/rest/next_gen_list_resource.rb