class Magentwo::Base
Constants
- DatasetMethods
Attributes
adapter[RW]
Public Class Methods
[](unique_identifier_value)
click to toggle source
# File lib/model/base.rb, line 67 def [] unique_identifier_value result = Magentwo::Base.get nil, path:"#{base_path}/#{unique_identifier_value}" self.new result if result end
all(ds=self.dataset, meta_data:false)
click to toggle source
# File lib/model/base.rb, line 89 def all ds=self.dataset, meta_data:false response = self.get(ds.to_query, :meta_data => meta_data) return [] if response.nil? items = (meta_data ? response[:items] : response) .map do |item| self.new item end if meta_data response[:items] = items response else items end end
base_path()
click to toggle source
# File lib/model/base.rb, line 81 def base_path "#{lower_case_name}s" end
call(method, path=self.base_path, params)
click to toggle source
# File lib/model/base.rb, line 140 def call method, path=self.base_path, params Magentwo::Base.adapter.call(method, path, params) end
dataset()
click to toggle source
# File lib/model/base.rb, line 121 def dataset Magentwo::Dataset.new(self) end
each(&block)
click to toggle source
# File lib/model/base.rb, line 113 def each &block self.dataset.each &block end
each_page(page_size=Magentwo.default_page_size, &block)
click to toggle source
# File lib/model/base.rb, line 109 def each_page page_size=Magentwo.default_page_size, &block self.dataset.each_page page_size, &block end
first(ds=self.dataset)
click to toggle source
# File lib/model/base.rb, line 104 def first ds=self.dataset response = self.get(ds.page(1, 1).to_query).first self.new response if response end
get(query, path:self.get_path, meta_data:false)
click to toggle source
# File lib/model/base.rb, line 131 def get query, path:self.get_path, meta_data:false case meta_data when true then self.call :get_with_meta_data, path, query when false then self.call :get, path, query else raise ArgumentError "unknown meta_data param, expected bool value. got: #{meta_data}" end end
get_path()
click to toggle source
# File lib/model/base.rb, line 85 def get_path base_path end
lower_case_name()
click to toggle source
# File lib/model/base.rb, line 76 def lower_case_name name = self.name.split(/::/).last "#{name[0,1].downcase}#{name[1..-1]}" end
map(&block)
click to toggle source
# File lib/model/base.rb, line 117 def map &block self.dataset.map &block end
new(args)
click to toggle source
# File lib/model/base.rb, line 5 def initialize args args.each do |key, value| key_sym = :"@#{key}" if self.respond_to? :"#{key}=" instance_variable_set key_sym, value end end if self.respond_to?(:custom_attributes) && args[:custom_attributes] self.custom_attributes = args[:custom_attributes].map do |attr| Hash[attr[:attribute_code].to_sym, attr[:value]] end.inject(&:merge) end end
unique_identifier()
click to toggle source
# File lib/model/base.rb, line 72 def unique_identifier :id end
Public Instance Methods
call(method, path, params)
click to toggle source
# File lib/model/base.rb, line 39 def call method, path, params self.class.call method, path, params end
check_presence(*attributes)
click to toggle source
# File lib/model/base.rb, line 35 def check_presence *attributes Magentwo::Validator.check_presence self, *attributes end
delete()
click to toggle source
# File lib/model/base.rb, line 26 def delete self.check_presence self.class.unique_identifier Magentwo::Base.call :delete, "#{self.class.base_path}/#{self.send(self.class.unique_identifier)}", nil end
save()
click to toggle source
# File lib/model/base.rb, line 19 def save self.validate self.check_presence self.class.unique_identifier response = Magentwo::Base.call :put, "#{self.class.base_path}/#{self.send(self.class.unique_identifier)}", self self.class.new response end
to_h()
click to toggle source
# File lib/model/base.rb, line 43 def to_h self.instance_variables.map do |k| key = k.to_s[1..-1] #symbol to string and remove @ in front if key == "custom_attributes" [ key, self.send(key).map do |k, v| {:attribute_code => k, :value => v} end ] else [key, self.send(key)] end end .to_h end
to_json()
click to toggle source
# File lib/model/base.rb, line 60 def to_json Hash[self.class.lower_case_name, self.to_h].to_json end
validate()
click to toggle source
# File lib/model/base.rb, line 31 def validate true end