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