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