class DirectAdmin::Request

Attributes

client[R]
endpont[R]
method[R]
params[R]
url[R]

Public Class Methods

new(client, method, endpoint, params) click to toggle source
# File lib/direct_admin/request.rb, line 10
def initialize(client, method, endpoint, params)
  @client   = client
  @method   = method
  @endpoint = endpoint
  @params   = params
  @url      = URI.join(client.server_url, endpoint).to_s if client
end

Public Instance Methods

_make_request() click to toggle source
# File lib/direct_admin/request.rb, line 34
def _make_request
  HTTP.basic_auth(user: client.server_username, pass: client.server_password)
      .public_send(method, url, form: params)
end
_parse_response(response) click to toggle source
# File lib/direct_admin/request.rb, line 39
def _parse_response(response)
  CGI.parse(response).reduce({}) do |memo, (key, value)|
    if value.is_a?(Array) && value.length == 1
      memo[key] = value.first
    else
      memo[key] = value
    end

    memo
  end
end
call() click to toggle source
# File lib/direct_admin/request.rb, line 18
def call
  response = _make_request

  if response.status == 404
    raise DirectAdmin::Error, "Invalid URL: #{url}"
  end

  parsed_body = _parse_response(response.to_s)

  unless response.code == 200
    raise DirectAdmin::Error, parsed_body["reason"]
  end

  parsed_body
end