class TestdroidAPI::CloudListResource
Public Class Methods
new(uri, client, instance_class = nil)
click to toggle source
# File lib/testdroid_api/cloud_list_resource.rb, line 4 def initialize(uri, client, instance_class = nil) @uri, @client = uri, client resource_name = self.class.name.split('::')[-1] @instance_class = TestdroidAPI.const_get(instance_class.nil? ? resource_name.chop : instance_class) @list_key, @instance_id_key = resource_name.gsub!(/\b\w/) {$&.downcase}, 'id' end
Public Instance Methods
create(params = {})
click to toggle source
# File lib/testdroid_api/cloud_list_resource.rb, line 19 def create(params = {}) raise "Can't create a resource without a REST Client" unless @client response = @client.post @uri, params @instance_class.new "#{@uri}/#{response[@instance_id_key]}", @client, response end
get(resource_id)
click to toggle source
# File lib/testdroid_api/cloud_list_resource.rb, line 11 def get(resource_id) @instance_class.new("#{@uri}/#{resource_id}", @client) end
list(params = {}, full_uri = false)
click to toggle source
# File lib/testdroid_api/cloud_list_resource.rb, line 40 def list(params = {}, full_uri = false) raise "Can't get a resource list without a REST Client" unless @client @uri = full_uri ? @uri.split(@client.instance_variable_get(:@cloud_url))[1] : @uri response = @client.get(@uri, params) class_list = [] if response['data'].is_a?(Array) client = @client list_class = self.class instance_uri = full_uri ? @uri.split('?')[0] : @uri response['data'].each do |val| class_list << @instance_class.new("#{instance_uri}/#{val[@instance_id_key]}", @client, val) end class_list.instance_eval do eigenclass = class << self; self; end eigenclass.send :define_method, :offset, &lambda {response['offset']} eigenclass.send :define_method, :limit, &lambda {response['limit']} eigenclass.send :define_method, :total, &lambda {response['total']} eigenclass.send :define_method, :next_page, &lambda { if response['next'] list_class.new(response['next'], client).list({}, true) else [] end } eigenclass.send :define_method, :previous_page, &lambda { if response['previous'] list_class.new(response['previous'], client).list({}, true) else [] end } end end class_list end
list_all()
click to toggle source
# File lib/testdroid_api/cloud_list_resource.rb, line 25 def list_all() raise "Can't get a resource list without a REST Client" unless @client response = @client.get(@uri, {:limit => 0}) class_list = [] if response['data'].is_a?(Array) instance_uri = @uri response['data'].each do |val| class_list << @instance_class.new("#{instance_uri}/#{val[@instance_id_key]}", @client, val) end end class_list end
total()
click to toggle source
# File lib/testdroid_api/cloud_list_resource.rb, line 15 def total @client.get(@uri)['total'] end