class BusinessCentral::Object::Response

Attributes

results[R]

Public Class Methods

new(response) click to toggle source
# File lib/business_central/object/response.rb, line 26
def initialize(response)
  @results = nil
  return if response.blank?

  @response = JSON.parse(response)
  @response = @response['value'] if @response.key?('value')
  process
end
not_found?(status) click to toggle source
# File lib/business_central/object/response.rb, line 19
def not_found?(status)
  status == 404
end
success?(status) click to toggle source
# File lib/business_central/object/response.rb, line 7
def success?(status)
  [200, 201].include?(status)
end
success_no_content?(status) click to toggle source
# File lib/business_central/object/response.rb, line 11
def success_no_content?(status)
  status == 204
end
unauthorized?(status) click to toggle source
# File lib/business_central/object/response.rb, line 15
def unauthorized?(status)
  status == 401
end

Private Instance Methods

convert(data) click to toggle source
# File lib/business_central/object/response.rb, line 50
def convert(data)
  result = {}
  data.each do |key, value|
    if key == '@odata.etag'
      result[:etag] = value
    elsif key == '@odata.context'
      result[:context] = value
    elsif value.is_a?(Hash)
      result[key.to_snake_case.to_sym] = convert(value)
    else
      result[key.to_snake_case.to_sym] = value
    end
  end

  result
end
process() click to toggle source
# File lib/business_central/object/response.rb, line 37
def process
  if @response.is_a?(String)
    @results = @response
  elsif @response.is_a?(Array)
    @results = []
    @response.each do |data|
      @results << convert(data)
    end
  elsif @response.is_a?(Hash)
    @results = convert(@response)
  end
end