Class: DirectAdmin::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/direct_admin/request.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client, method, endpoint, params) ⇒ Request

Returns a new instance of Request.



10
11
12
13
14
15
16
# 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

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



8
9
10
# File 'lib/direct_admin/request.rb', line 8

def client
  @client
end

#endpontObject (readonly)

Returns the value of attribute endpont.



8
9
10
# File 'lib/direct_admin/request.rb', line 8

def endpont
  @endpont
end

#methodObject (readonly)

Returns the value of attribute method.



8
9
10
# File 'lib/direct_admin/request.rb', line 8

def method
  @method
end

#paramsObject (readonly)

Returns the value of attribute params.



8
9
10
# File 'lib/direct_admin/request.rb', line 8

def params
  @params
end

#urlObject (readonly)

Returns the value of attribute url.



8
9
10
# File 'lib/direct_admin/request.rb', line 8

def url
  @url
end

Instance Method Details

#_make_requestObject



34
35
36
37
# 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) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
# 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

#callObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 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