class CFC::API
Public Class Methods
new()
click to toggle source
# File lib/cfc/api.rb, line 11 def initialize @base = 'https://api.cloudflare.com/client/v4/' @cache = CFC::Cache.new end
Public Instance Methods
delete(path, data: {}, headers: nil, cache: false, expiry: nil)
click to toggle source
# File lib/cfc/api.rb, line 24 def delete(path, data: {}, headers: nil, cache: false, expiry: nil) request(Net::HTTP::Delete, URI("#{@base}#{path}"), data: data, headers: headers, cache: cache, expiry: expiry) end
delete_to_json(path, data: {}, headers: nil, cache: false, expiry: nil)
click to toggle source
# File lib/cfc/api.rb, line 28 def delete_to_json(path, data: {}, headers: nil, cache: false, expiry: nil) request_json(Net::HTTP::Delete, URI("#{@base}#{path}"), data: data, headers: headers, cache: cache, expiry: expiry) end
get(path, params: nil, headers: nil, cache: true, expiry: nil)
click to toggle source
# File lib/cfc/api.rb, line 16 def get(path, params: nil, headers: nil, cache: true, expiry: nil) request(Net::HTTP::Get, build_uri(path, params), headers: headers, cache: cache, expiry: expiry) end
get_json(path, params: nil, headers: nil, cache: true, expiry: nil)
click to toggle source
# File lib/cfc/api.rb, line 20 def get_json(path, params: nil, headers: nil, cache: true, expiry: nil) request_json(Net::HTTP::Get, build_uri(path, params), headers: headers, cache: cache, expiry: expiry) end
Protected Instance Methods
build_uri(path, params)
click to toggle source
# File lib/cfc/api.rb, line 87 def build_uri(path, params) uri = URI("#{@base}#{path}") uri.query = URI.encode_www_form((params || {}).to_a) uri end
request(cls, uri, data: nil, headers: nil, cache: true, expiry: nil)
click to toggle source
# File lib/cfc/api.rb, line 47 def request(cls, uri, data: nil, headers: nil, cache: true, expiry: nil) headers = (headers || {}).merge({ 'Content-Type' => 'application/json' }) @auth_method = CFC::Config.instance.token.nil? ? :key : :token case @auth_method when :token headers.merge!({ 'Authentication' => "Bearer #{CFC::Config.instance.token}" }) when :key headers.merge!({ 'X-Auth-Key' => CFC::Config.instance.api_key, 'X-Auth-Email' => CFC::Config.instance.api_email }) end rq = cls.new(uri, headers) unless data.nil? || rq.is_a?(Net::HTTP::Head) rq.body = JSON.dump(data) end response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http| if cache @cache.fetch(Digest::SHA256.hexdigest("#{uri}|#{JSON.dump(headers)}"), expiry: expiry) do http.request(rq) end else http.request(rq) end end if response.is_a?(Net::HTTPSuccess) response else raise CFC::Errors::HTTPError.new(rq, response) end end
request_json(cls, path, data: nil, headers: nil, cache: true, expiry: nil)
click to toggle source
# File lib/cfc/api.rb, line 83 def request_json(cls, path, data: nil, headers: nil, cache: true, expiry: nil) JSON.parse(request(cls, path, data: data, headers: headers, cache: cache, expiry: expiry).body) end