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