Sha256: 810855089549dc106faa50646d20eb343b056cf77ad1054677fb8006da84267c

Contents?: true

Size: 1.04 KB

Versions: 2

Compression:

Stored size: 1.04 KB

Contents

module Restcomm
  module REST
    class NextGenListResource < Restcomm::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

2 entries across 2 versions & 1 rubygems

Version Path
restcomm-ruby-1.2.1 lib/restcomm-ruby/rest/next_gen_list_resource.rb
restcomm-ruby-1.2.0 lib/restcomm-ruby/rest/next_gen_list_resource.rb