class MyobAdvanced::Api::Model::Base
Constants
- QUERY_OPTIONS
Public Class Methods
new(client, model_name)
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 7 def initialize(client, model_name) @client = client @api_url = client.default_api_url @model_name = model_name || 'Base' end
Public Instance Methods
all(options = {})
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 17 def all(options = {}) perform_request(self.url(nil, options[:params]), options) end
Also aliased as: get
create(object, options = {})
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 65 def create(object, options = {}) object = typecast(object) request_options = { body: object, method: 'put' } perform_request(self.url(nil, options[:params]), request_options) end
destroy(id)
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 36 def destroy(id) object = { 'ID' => id } @client.connection.delete(self.url(object), :headers => @client.headers) end
destroy_by_path(sub_path)
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 41 def destroy_by_path(sub_path) object = { 'sub_path' => sub_path } @client.connection.delete(self.url(object), :headers => @client.headers) end
exec_action(action, options = {})
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 46 def exec_action(action, options = {}) options[:method] = 'post' object = { 'sub_path' => action } perform_request(self.url(object, options[:params]), options) end
find(id, options = {})
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 22 def find(id, options = {}) object = { 'ID' => id } perform_request(self.url(object, options[:params]), options) end
find_by_path(sub_path, options = {})
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 27 def find_by_path(sub_path, options = {}) object = { 'sub_path' => sub_path } perform_request(self.url(object, options[:params]), options) end
first(options = {})
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 32 def first(options = {}) all(options).first end
get_attach(options = {})
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 59 def get_attach(options = {}) object = nil object = { 'sub_path' => options[:sub_path] } if options[:sub_path] perform_request(self.url(object, options[:params]), options) end
model_route()
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 13 def model_route @model_name.to_s end
put_attach(options = {})
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 52 def put_attach(options = {}) options[:method] = 'put' object = nil object = { 'sub_path' => options[:sub_path] } if options[:sub_path] perform_request(self.url(object, options[:params]), options) end
update(object, options = {})
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 71 def update(object, options = {}) object = typecast(object) request_options = { body: object, method: 'put' } perform_request(self.url(nil, options[:params]), request_options) end
url(object = nil, params = nil)
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 77 def url(object = nil, params = nil) @model_route ||= model_route url = @api_url if @model_route.present? sub_path = nil sub_path = "/#{object['ID']}" if object && object['ID'] sub_path = "/#{object['sub_path']}" if object && object['sub_path'] # Init url url = "#{@api_url}/#{@model_route}#{sub_path}" end if params.is_a?(Hash) query = query_string(params) url += "?#{query}" if !query.nil? && query.length > 0 end url end
Private Instance Methods
build_filter(value)
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 137 def build_filter(value) return value unless value.is_a?(Hash) temp = "\\\\'" value.map { |key, value| "#{key} eq '#{value.to_s.gsub("'", temp)}'" }.join(' and ') end
date_formatter()
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 111 def date_formatter "%Y-%m-%dT%H:%M:%S" end
parse_response(response)
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 144 def parse_response(response) return response.body unless response.body.present? JSON.parse(response.body) rescue {} end
perform_request(url, options = {})
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 119 def perform_request(url, options = {}) request_options = { headers: @client.headers } request_options[:body] = options[:body].to_json if options[:body] method = options[:method] || 'get' parse_response(@client.connection.send(method, url, request_options)) end
process_query(data, query)
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 150 def process_query(data, query) query.each do |property, value| data.select! {|x| x[property] == value} end data end
query_string(params)
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 126 def query_string(params) params.map do |key, value| if QUERY_OPTIONS.include?(key) value = build_filter(value) if key == :filter key = "$#{key}" end "#{key}=#{CGI.escape(value.to_s)}" end.join('&') end
resource_url()
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 115 def resource_url "#{@api_url}/#{self.model_route}" end
typecast(object)
click to toggle source
# File lib/myob_advanced/api/models/base.rb, line 99 def typecast(object) returned_object = object.dup # don't change the original object returned_object.each do |key, value| if value.respond_to?(:strftime) returned_object[key] = value.strftime(date_formatter) end end returned_object end