Class: Vestacp::Base
- Inherits:
-
Object
- Object
- Vestacp::Base
- Defined in:
- lib/vestacp/base.rb
Overview
Vestacp::Base is the main class used to subclass Vestacp API resources
Class Method Summary collapse
-
.parse_response(raw, json_response = false) ⇒ Object
Parse VestaCP responses.
-
.send_request(params = {}, raw = {}, json_response = false) ⇒ Object
Sends an API request to the Vestacp API.
Class Method Details
.parse_response(raw, json_response = false) ⇒ Object
Parse VestaCP responses. TODO: add more responses.
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/vestacp/base.rb', line 56 def self.parse_response(raw, json_response = false) case raw when 'OK' {error: false, response: raw} when /^Error/ {error: true, response: raw} else {error: false, response: raw} end # case raw # when '0' # { # error: false, value: raw, name: 'OK', # comment: 'Command has been successfuly performed.' # } # when '1' # { # error: true, value: raw, name: 'E_ARGS', # comment: 'Not enough arguments provided.' # } # when '2' # { # error: true, value: raw, name: 'E_INVALID', # comment: 'Object or argument is not valid.' # } # when '3' # { # error: true, value: raw, name: 'E_NOTEXIST', # comment: "Object doesn't exist." # } # else # { # error: true, value: '-1', name: 'E_UNKNOWN', # comment: "Unknown response: #{raw}" # } # end end |
.send_request(params = {}, raw = {}, json_response = false) ⇒ Object
Sends an API request to the Vestacp API
Parameters:
-
:cmd
- The API action to perform
All other paramters are passed along as HTTP POST variables
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/vestacp/base.rb', line 14 def self.send_request(params = {}, raw = {}, json_response = false) if params[:cmd].nil? || params[:cmd].empty? raise "No API command set" end if !raw[:server] raise "No server as argument and server configuration!" unless Vestacp.config raw[:server] = { api_username: Vestacp.config.api_username, api_password: Vestacp.config.api_password, api_url: Vestacp.config.api_url } end params.merge!( user: raw[:server][:api_username], password: raw[:server][:api_password] ) # params.merge!(returncode: 'yes') unless params[:returncode] url = URI.parse(raw[:server][:api_url]) # SSL without is really bad design. In order to support even self-signed # certificates I should do that. conn = Faraday.new(:url => url, ssl: { verify: false }) do |faraday| faraday.request :url_encoded # form-encode POST params faraday.response :logger # log requests to STDOUT faraday.adapter Faraday.default_adapter # make requests with Net::HTTP end response = conn.post do |req| req.body = params end parse_response(json_response ? JSON.parse(response.body) : response.body) end |