class Charging::Base

Constants

COMMON_ATTRIBUTES
DEFAULT_LIMIT
DEFAULT_PAGE

Attributes

errors[R]
last_response[R]

Public Class Methods

new(attributes, response) click to toggle source
# File lib/charging/base.rb, line 13
def initialize(attributes, response)
  Helpers.load_variables(self, get_attributes, attributes)
  
  @last_response = response
  @errors = []
  @deleted = false
  
  normalize_etag!
end

Private Class Methods

raise_last_response_unless(status_code, response) click to toggle source
# File lib/charging/base.rb, line 80
def self.raise_last_response_unless(status_code, response)
  raise Http::LastResponseError.new(response) if response.code != status_code
end

Public Instance Methods

attributes() click to toggle source

Returns a hash with attributes

# File lib/charging/base.rb, line 68
def attributes
  Helpers.hashify(self, self.class::ATTRIBUTES)
end
create!(&block) click to toggle source
# File lib/charging/base.rb, line 23
def create!(&block)
  execute_and_capture_raises_at_errors(201) do
    @last_response = block.call
  end
  
  self
end
deleted?() click to toggle source

Returns true if object already deleted on API

# File lib/charging/base.rb, line 63
def deleted?
  @deleted || false
end
destroy!(&block) click to toggle source
# File lib/charging/base.rb, line 31
def destroy!(&block)
  execute_and_capture_raises_at_errors(204) do
    @last_response = block.call
  end
  
  if errors.empty?
    @deleted = true
    @persisted = false
  end
  
  self
end
normalize_etag!() click to toggle source
# File lib/charging/base.rb, line 44
def normalize_etag!
  if @etag.nil?
    @etag = last_response.headers[:etag] if last_response && last_response.code === 200
  else
    @etag = @etag.inspect
  end
end
persisted?() click to toggle source

Returns true if the object exists on Charging service.

# File lib/charging/base.rb, line 53
def persisted?
  (uuid && etag && uri && !deleted?) || false
end
unpersisted?() click to toggle source

Returns true if the object exists on Charging service.

# File lib/charging/base.rb, line 58
def unpersisted?
  !persisted?
end

Private Instance Methods

execute_and_capture_raises_at_errors(success_code, &block) click to toggle source
# File lib/charging/base.rb, line 88
def execute_and_capture_raises_at_errors(success_code, &block)
  reset_errors!
  
  block.call

  raise_last_response_unless success_code
ensure
  if $ERROR_INFO
    @last_response = $ERROR_INFO.last_response if $ERROR_INFO.kind_of?(Http::LastResponseError)
    @errors = [$ERROR_INFO.message]
  end
end
get_attributes() click to toggle source
# File lib/charging/base.rb, line 105
def get_attributes
  ((self.class::ATTRIBUTES || []) + (self.class::READ_ONLY_ATTRIBUTES || []) + COMMON_ATTRIBUTES).flatten.uniq
end
raise_last_response_unless(status_code) click to toggle source
# File lib/charging/base.rb, line 84
def raise_last_response_unless(status_code)
  self.class.raise_last_response_unless(status_code, last_response)
end
reset_errors!() click to toggle source
# File lib/charging/base.rb, line 101
def reset_errors!
  @errors = []
end