Module: PinganApi::Models::Extensions::Map

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/pingan_api/models/extensions/map.rb', line 31

def self.included(base)
  def base.from_xml(xml)
    hash = Hash.from_xml(xml)
    hash_all = nil
    unless hash["Response"].nil?
      hash_all = hash["Response"]["Head"].merge(hash["Response"]["Body"]["Apply"])
    end
    unless hash["Request"].nil?
      hash_all = hash["Request"]["Head"].merge(hash["Request"]["Body"]["Apply"])
    end
    # fuck pingan dev 100000.times
    unless hash["RESPONSE"].nil?
      hash_all = hash["RESPONSE"]["Head"].merge(hash["RESPONSE"]["Body"]["Apply"])
    end

    instance = self.new
    instance.mapping(hash_all)
    return instance
  end
end

Instance Method Details

#get_bindingObject



8
9
10
# File 'lib/pingan_api/models/extensions/map.rb', line 8

def get_binding
  binding
end

#get_result(template_path) ⇒ Object



12
13
14
15
# File 'lib/pingan_api/models/extensions/map.rb', line 12

def get_result(template_path)
  erb = ERB.new(File.read(template_path))
  return erb.result(self.get_binding)
end

#mapping(hash) ⇒ Object



17
18
19
20
21
# File 'lib/pingan_api/models/extensions/map.rb', line 17

def mapping(hash)
  self.class.attr_names.each do |a|
    self.send("#{a.to_s}=", hash[a.upcase.to_s])
  end
end

#to_hashObject



23
24
25
26
27
28
29
# File 'lib/pingan_api/models/extensions/map.rb', line 23

def to_hash
  hash = {}
  self.instance_variables.each do |var|
    hash[var.to_s.delete("@")] = self.instance_variable_get(var)
  end
  return hash
end