module MxHero::API::Communication

Public Instance Methods

call(method, url, body = nil, more_options = {}) click to toggle source

Make a HTTP call @param method [Symbol] indicate the HTTP verb (:get, :post, :put, etc) @param url [String] @param body [String] (default: nil) @param [Hash] more_options @option more_options [Boolean] :throw_exception (default: true) throw exception if the response status are between 500 and 600 @return [HTTP::Message](www.rubydoc.info/gems/httpclient/HTTP/Message)

# File lib/communication.rb, line 17
def call(method, url, body = nil, more_options = {})
  unless @client
    @client ||= HTTPClient.new(:force_basic_auth => true)
  end
  @client.set_auth(url, @username, @password)
  response = @client.request(method, url, nil, body, headers(more_options))
  raise "Unauthorized" if response.status == 401
  unless more_options[:throw_exception] == false
    raise "An error ocurred when try to communicate with the API\nError: #{response.inspect}" if (500..600).include?(response.status)
  end
  response
end
headers(options = {}) click to toggle source

Default headers

# File lib/communication.rb, line 31
                  def headers(options = {})
                          accept = options.fetch(:accept, 'application/json')
                          content_type = options.fetch(:content_type, 'application/json')
                          return {
    'Accept' => accept,
    'Content-Type' => content_type,
    "Authorization" => "Basic " + ::Base64.encode64(@username + ':' + @password).gsub("\n",''),
  }.merge(@as_user ? { "X-MxHero-As-User" => @as_user } : {})
end
json_parse(json) click to toggle source

@return [Hash]

# File lib/communication.rb, line 42
def json_parse(json)
  JSON.parse(json, symbolize_names: true)
end