lib/fog/rackspace/models/dns/zones.rb in fog-1.9.0 vs lib/fog/rackspace/models/dns/zones.rb in fog-1.10.0

- old
+ new

@@ -6,13 +6,46 @@ class Rackspace class Zones < Fog::Collection model Fog::DNS::Rackspace::Zone - def all + def all(options={}) clear - data = service.list_domains.body['domains'] + data = service.list_domains(options).body['domains'] load(data) + end + + # Returns all domains containing the given substring. Still limited + # by the 100-domain pagination limit. Returns an empty array if + # no matches. + def find(substring) + clear + data = service.list_domains(:name => substring).body['domains'] + load(data) + end + + alias :each_zone_this_page :each + def each + if !block_given? + self + else + body = service.list_domains.body + subset = dup.all + + subset.each_zone_this_page {|f| yield f} + if body.has_key?('links') + while !body['links'].select{|l| l['rel'] == 'next'}.empty? + url = body['links'].select{|l| l['rel'] == 'next'}.first['href'] + query = url.match(/\?(.+)/) + parsed = CGI.parse($1) + + body = service.list_domains(:offset => parsed['offset'], :limit => parsed['limit']).body + subset = dup.all(:offset => parsed['offset'], :limit => parsed['limit']) + subset.each_zone_this_page {|f| yield f} + end + end + self + end end def get(zone_id) if zone_id.nil? or zone_id.to_s.empty? return nil