module Cloudflair::Communication
Public Instance Methods
connection()
click to toggle source
# File lib/cloudflair/communication.rb, line 17 def connection Cloudflair::Connection.new end
hash_to_object(hash)
click to toggle source
# File lib/cloudflair/communication.rb, line 21 def hash_to_object(hash) objectified_class = Class.new objectified_instance = objectified_class.new hash.each do |k, v| variable_name = sanitize_variable_name(k) variable_name = "_#{variable_name}" if objectified_instance.methods.map(&:to_s).include?(variable_name) objectified_instance.instance_variable_set("@#{variable_name}", v) objectified_class.send :define_method, variable_name, proc { instance_variable_get("@#{variable_name}") } end objectified_instance end
response(response)
click to toggle source
# File lib/cloudflair/communication.rb, line 9 def response(response) return nil if response.status == 304 raise_on_http_error response.status read response end
Private Instance Methods
raise_on_http_client_error(status)
click to toggle source
# File lib/cloudflair/communication.rb, line 60 def raise_on_http_client_error(status) case status when 400 raise Cloudflair::CloudflairError, '400 Bad Request' when 401 raise Cloudflair::CloudflairError, '401 Unauthorized' when 403 raise Cloudflair::CloudflairError, '403 Forbidden' when 405 raise Cloudflair::CloudflairError, '405 Method Not Allowed' when 415 raise Cloudflair::CloudflairError, '415 Unsupported Media Type' when 429 raise Cloudflair::CloudflairError, '429 Too Many Requests' else raise Cloudflair::CloudflairError, "#{status} Request Error" end end
raise_on_http_error(status)
click to toggle source
# File lib/cloudflair/communication.rb, line 48 def raise_on_http_error(status) case status when 200..399 when 400..499 raise_on_http_client_error status when 500..599 raise Cloudflair::CloudflairError, "#{status} Remote Error" else raise Cloudflair::CloudflairError, "#{status} Unknown Error Code" end end
read(response)
click to toggle source
# File lib/cloudflair/communication.rb, line 36 def read(response) body = response.body unless body['success'] raise Cloudflair::CloudflairError, "Unrecognized response format: '#{body}'" unless body['errors'] raise Cloudflair::CloudflareError, body['errors'] end body['result'] end
sanitize_variable_name(raw_name)
click to toggle source
# File lib/cloudflair/communication.rb, line 79 def sanitize_variable_name(raw_name) raw_name.gsub(/[^a-zA-Z0-9_]/, '_') end