class MoySklad::Client::Base

Public Class Methods

collection_name() click to toggle source
# File lib/moy_sklad/client/base.rb, line 37
def collection_name
  @collection_name ||= "#{element_name.classify}/list"
end
element_path(id, prefix_options = {}, query_options = nil) click to toggle source

Custom path builder

# File lib/moy_sklad/client/base.rb, line 25
def element_path(id, prefix_options = {}, query_options = nil)
  check_prefix_options(prefix_options)

  prefix_options, query_options = split_options(prefix_options) if query_options.nil?
  "#{prefix(prefix_options)}#{element_name.classify}/" \
  "#{URI.parser.escape id.to_s}#{query_string(query_options)}"
end
find(*args) click to toggle source
Calls superclass method
# File lib/moy_sklad/client/base.rb, line 18
def find(*args)
  # Little trick for correct baseclass name
  self.format.element_name = element_name.classify
  super(*args)
end
new_element_path(prefix_options = {}) click to toggle source
# File lib/moy_sklad/client/base.rb, line 33
def new_element_path(prefix_options = {})
  "#{prefix(prefix_options)}#{element_name.classify}"
end

Public Instance Methods

applicable?() click to toggle source
# File lib/moy_sklad/client/base.rb, line 56
def applicable?
  applicable.to_s == 'true'
end
create() click to toggle source

Override create method, this required because moysklad uses PUT instead of POST

# File lib/moy_sklad/client/base.rb, line 43
def create
  run_callbacks :create do _create end
end
destroy() click to toggle source
# File lib/moy_sklad/client/base.rb, line 47
def destroy
  run_callbacks :destroy do _destroy end
end
save() click to toggle source
Calls superclass method
# File lib/moy_sklad/client/base.rb, line 51
def save
  super
  self.error.is_a?(MoySklad::Client::Attribute::MissingAttr)
end

Private Instance Methods

_create() click to toggle source
# File lib/moy_sklad/client/base.rb, line 62
def _create
  connection.put(new_element_path, encode, self.class.headers).tap do |response|
    self.id = id_from_response(response)
    load_attributes_from_response(response)
  end
end
_destroy() click to toggle source
# File lib/moy_sklad/client/base.rb, line 69
def _destroy
  connection.delete(self.class.element_path(uuid), self.class.headers)
end
compile_template() click to toggle source
# File lib/moy_sklad/client/base.rb, line 80
    def compile_template
      file_path = File.join("#{@@template_path}", "#{self.class.element_name}.builder")
      File.open(file_path) do |f|
        template = f.read

        self.class.module_eval(<<-CODE)
          def create_xml
            builder = ::Nokogiri::XML::Builder.new(encoding: 'utf-8') do |xml|
              #{template}
            end.to_xml()
          end
        CODE
      end
    end
encode() click to toggle source

Custom data encoder Template compiled only ONCE !!!

# File lib/moy_sklad/client/base.rb, line 75
def encode
  compile_template unless respond_to?(:create_xml)
  create_xml
end