class MaxCDN::Client
Attributes
client[RW]
debug[RW]
Public Class Methods
new(company_alias, key, secret, server="rws.maxcdn.com", secure_connection=true, _debug=false)
click to toggle source
# File lib/maxcdn.rb, line 12 def initialize(company_alias, key, secret, server="rws.maxcdn.com", secure_connection=true, _debug=false) @debug = _debug @secure_connection = secure_connection @company_alias = company_alias @server = server @request_signer = Signet::OAuth1::Client.new( client_credential_key: key, client_credential_secret: secret, two_legged: true ) end
Public Instance Methods
_connection_type()
click to toggle source
# File lib/maxcdn.rb, line 24 def _connection_type @secure_connection ? "https" : "http" end
_get_url(uri, params={})
click to toggle source
# File lib/maxcdn.rb, line 28 def _get_url uri, params={} url = "#{_connection_type}://#{@server}/#{@company_alias}/#{uri.gsub(/^\//, "")}" url += "?#{params.to_params}" if params && !params.empty? url end
_response_as_json(method, uri, options={})
click to toggle source
# File lib/maxcdn.rb, line 34 def _response_as_json method, uri, options={}, data={} puts "Making #{method.upcase} request to #{_get_url uri}" if debug req_opts = { method: method } req_opts[:uri] = _get_url(uri, (options[:body] ? {} : data)) req_opts[:body] = data.to_params if options[:body] request = @request_signer.generate_authenticated_request(req_opts) # crazyness for headers headers = { "Content-Type" => options[:body] ? "application/json" : "application/x-www-form-urlencoded" } headers.case_indifferent_merge(options.delete(:headers) || {}) headers["User-Agent"] = "Ruby MaxCDN API Client" # merge headers with request headers request.headers.case_indifferent_merge(headers) begin url, path = req_opts[:uri].match(%r"^(https://[^/]+)(/.+)$")[1, 2] conn = Faraday.new(:url => url) do |faraday| faraday.adapter :net_http_persistent end response = conn.send(method, path) do |req| req.headers = request.headers req.body = request.body end return response if options[:debug_request] pp response if debug response_json = JSON.load(response.body) return response_json if options[:debug_json] pp response_json if debug unless response.success? error_message = response_json["error"]["message"] raise MaxCDN::APIException.new("#{response.status}: #{error_message}") end rescue TypeError raise MaxCDN::APIException.new("#{response.status}: No information supplied by the server") end response_json end
purge(zone_id, file_or_files=nil, options={})
click to toggle source
# File lib/maxcdn.rb, line 98 def purge zone_id, file_or_files=nil, options={} if file_or_files.nil? return self.delete("/zones/pull.json/#{zone_id}/cache", {}, options) end if file_or_files.is_a?(String) return self.delete("/zones/pull.json/#{zone_id}/cache", { "files" => file_or_files }, options) end if file_or_files.is_a?(Array) result = {} file_or_files.each do |file| result[file] = self.delete("/zones/pull.json/#{zone_id}/cache", { "files" => file }, options) end return result end if file_or_files.is_a?(Hash) return self.purge(zone_id, file_or_files[:files]) if file_or_files.has_key?("files") return self.purge(zone_id, file_or_files[:files]) if file_or_files.has_key?(:files) end raise MaxCDN::APIException.new("Invalid file_or_files argument for delete method.") end