class Beget::API

Beget API wrapper

Constants

API_URI

Public Class Methods

new(login, password) click to toggle source
# File lib/beget_api.rb, line 12
def initialize(login, password)
  @login = login
  @password = password
end

Public Instance Methods

method_missing(method) click to toggle source
# File lib/beget_api.rb, line 17
def method_missing(method)
  Section.new(self, method)
end
request(section, method, **data) click to toggle source
# File lib/beget_api.rb, line 25
def request(section, method, **data)
  query = {
    login: @login,
    passwd: @password,
    output_format: 'json'
  }

  unless data.empty?
    query.merge!(
      {
        input_format: 'json',
        input_data: JSON.generate(data)
      }
    )
  end

  uri = "#{API_URI}/#{section}/#{method}?#{URI.encode_www_form(query)}"

  response = Net::HTTP.get_response(URI(uri))
  raise HTTPError, response.code unless response.is_a?(Net::HTTPSuccess)

  response_data = JSON.parse(response.body)
  if response_data['status'] == 'error'
    raise RequestError.new(
      response_data['error_code'],
      response_data['error_text']
    )
  end

  raise AnswerError, response_data['answer']['errors'] if response_data['answer']['status'] == 'error'

  response_data['answer']['result']
end
respond_to_missing?() click to toggle source
# File lib/beget_api.rb, line 21
def respond_to_missing?
  true
end