lib/cloudflare/connection.rb in cloudflare-3.0.0 vs lib/cloudflare/connection.rb in cloudflare-3.1.0

- old
+ new

@@ -29,10 +29,12 @@ module Cloudflare DEFAULT_URL = "https://api.cloudflare.com/client/v4/" TIMEOUT = 10 # Default is 5 seconds class Resource < RestClient::Resource + include Enumerable + # @param api_key [String] `X-Auth-Key` or `X-Auth-User-Service-Key` if no email provided. # @param email [String] `X-Auth-Email`, your email address for the account. def initialize(url = DEFAULT_URL, key: nil, email: nil, **options) headers = options[:headers] || {} @@ -45,9 +47,25 @@ # Convert HTTP API responses to our own internal response class: super(url, headers: headers, accept: 'application/json', **options) do |response| Response.new(response.request.url, response.body) end + end + + def paginate(obj, url, url_args = "") + page = 1 + page_size = 100 + results = [] + + # fetch and aggregate all pages + loop do + rules = obj.new(concat_urls(url, "?scope_type=organization#{url_args}&per_page=#{page_size}&page=#{page}"), self, **options) + results += rules.get.results + break if results.size % page_size != 0 + page += 1 + end + + return results end end class Connection < Resource end