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