Class: OpenSRS::XmlProcessor::Nokogiri

Inherits:
OpenSRS::XmlProcessor show all
Defined in:
lib/opensrs/xml_processor/nokogiri.rb

Overview

Nokogiri

Class Method Summary collapse

Methods inherited from OpenSRS::XmlProcessor

build_element, decode_data, encode_data, encode_dt_array, encode_dt_assoc, parse

Class Method Details

.build(data) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/opensrs/xml_processor/nokogiri.rb', line 12

def self.build(data)
  builder = ::Nokogiri::XML::Builder.new

  envelope   = ::Nokogiri::XML::Node.new('OPS_envelope', builder.doc)
  header     = ::Nokogiri::XML::Node.new('header', builder.doc)
  version    = ::Nokogiri::XML::Node.new('version', builder.doc)
  body       = ::Nokogiri::XML::Node.new('body', builder.doc)
  data_block = ::Nokogiri::XML::Node.new('data_block', builder.doc)
  other_data = encode_data(data, builder.doc)
  version << '0.9'
  header << version
  envelope << header
  builder.doc << envelope
  data_block << other_data
  body << data_block
  envelope << body

  OpenSRS::SanitizableString.new(builder.to_xml, sanitize(builder.to_xml))
end

.data_block_element(response) ⇒ Object



44
45
46
47
# File 'lib/opensrs/xml_processor/nokogiri.rb', line 44

def self.data_block_element(response)
  doc = ::Nokogiri::XML(response)
  doc.xpath('//OPS_envelope/body/data_block/*')
end

.decode_dt_array_data(element) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
# File 'lib/opensrs/xml_processor/nokogiri.rb', line 49

def self.decode_dt_array_data(element)
  dt_array = []

  element.children.each do |item|
    next if item.content.strip.empty?

    dt_array[item.attributes['key'].value.to_i] = decode_data(item.children)
  end

  dt_array
end

.decode_dt_assoc_data(element) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
# File 'lib/opensrs/xml_processor/nokogiri.rb', line 61

def self.decode_dt_assoc_data(element)
  dt_assoc = {}

  element.children.each do |item|
    next if item.content.strip.empty?

    dt_assoc[item.attributes['key'].value] = decode_data(item.children)
  end

  dt_assoc
end

.new_element(element_name, container) ⇒ Object



73
74
75
# File 'lib/opensrs/xml_processor/nokogiri.rb', line 73

def self.new_element(element_name, container)
  ::Nokogiri::XML::Node.new(element_name.to_s, container.document)
end