class QbwcRequests::Base
Public Class Methods
new(attributes = {})
click to toggle source
# File lib/qbwc_requests/base.rb, line 11 def initialize(attributes = {}) @attributes = compact(attributes) @attributes.each do |name, value| self.instance_variable_set("@#{name}", value) if value.present? end end
qbxml(hash)
click to toggle source
# File lib/qbwc_requests/base.rb, line 18 def self.qbxml hash Qbxml.new(:qb, "#{version.to_i}.0").to_qbxml(hash) end
version()
click to toggle source
# File lib/qbwc_requests/base.rb, line 26 def self.version self.name.split("::")[2].gsub("V","") end
Private Class Methods
underscore(string)
click to toggle source
# File lib/qbwc_requests/base.rb, line 36 def self.underscore string string.gsub(/::/, '/'). gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2'). gsub(/([a-z\d])([A-Z])/,'\1_\2'). tr("-", "_"). downcase end
Public Instance Methods
class_name()
click to toggle source
# File lib/qbwc_requests/base.rb, line 22 def class_name self.class.underscore(self.class.name.split("::")[1].gsub("Qbxml","")) end
persisted?()
click to toggle source
# File lib/qbwc_requests/base.rb, line 30 def persisted? false end
to_xml(request_id)
click to toggle source
# File lib/qbwc_requests/base.rb, line 7 def to_xml request_id self.valid? ? xml(request_id, self.class.name.demodulize) : self end
Private Instance Methods
compact(opts={})
click to toggle source
# File lib/qbwc_requests/base.rb, line 44 def compact opts={} # I pass two times to avoid {v: '1',k: {}}, gotta find a better algorithm (recursive) return {} if opts.nil? proc = Proc.new { |k, v| v.kind_of?(Hash) ? (v.delete_if(&proc); nil) : (v == nil || (v.respond_to?(:empty) && v.empty?)) }; hash = opts.delete_if(&proc) hash.delete_if { |k, v| (v == nil || (v.respond_to?(:empty) && v.empty?)) } end
xml(request_id, action)
click to toggle source
# File lib/qbwc_requests/base.rb, line 52 def xml request_id, action req = XmlActions.header if action != "Query" req['qbxml']['qbxml_msgs_rq']["#{class_name}_#{action}_rq"] = {"xml_attributes"=> {"requestID"=>"#{request_id}"}, "#{class_name}_#{action}"=> self.ordered_fields } else req['qbxml']= { 'qbxml_msgs_rq' => { "xml_attributes" => { "onError"=>"stopOnError" }, "#{class_name}_query_rq" => { "xml_attributes" => { "requestID" => "#{request_id}"} }.merge(self.ordered_fields) } } end self.class.qbxml(req) end