opensrs 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +14 -0
- data/Gemfile.lock +36 -0
- data/LICENSE +1 -1
- data/README.rdoc +41 -37
- data/Rakefile +30 -40
- data/lib/opensrs.rb +3 -1
- data/lib/opensrs/server.rb +20 -5
- data/lib/opensrs/version.rb +5 -0
- data/lib/opensrs/xml_processor.rb +77 -0
- data/lib/opensrs/xml_processor/libxml.rb +60 -0
- data/lib/opensrs/xml_processor/nokogiri.rb +59 -0
- data/opensrs.gemspec +42 -21
- data/spec/opensrs/server_spec.rb +21 -0
- data/spec/opensrs/version_spec.rb +9 -0
- data/spec/opensrs/{xml_spec.rb → xml_processor/libxml_spec.rb} +16 -16
- data/spec/opensrs/xml_processor/nokogiri_spec.rb +228 -0
- data/spec/spec_helper.rb +5 -1
- metadata +104 -40
- data/VERSION +0 -1
- data/lib/opensrs/xml.rb +0 -109
- data/test/opensrs_test.rb +0 -7
- data/test/test_helper.rb +0 -10
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opensrs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 21
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
- 1
|
10
|
-
version: 0.2.1
|
5
|
+
version: 0.3.0
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Josh Delsman
|
@@ -15,40 +10,110 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date: 2011-
|
13
|
+
date: 2011-05-09 00:00:00 -04:00
|
19
14
|
default_executable:
|
20
15
|
dependencies:
|
21
16
|
- !ruby/object:Gem::Dependency
|
22
17
|
name: libxml-ruby
|
23
|
-
prerelease: false
|
24
18
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
19
|
none: false
|
26
20
|
requirements:
|
27
|
-
- -
|
21
|
+
- - ~>
|
28
22
|
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
23
|
+
version: 1.0.0
|
33
24
|
type: :runtime
|
25
|
+
prerelease: false
|
34
26
|
version_requirements: *id001
|
35
27
|
- !ruby/object:Gem::Dependency
|
36
|
-
name:
|
37
|
-
prerelease: false
|
28
|
+
name: nokogiri
|
38
29
|
requirement: &id002 !ruby/object:Gem::Requirement
|
30
|
+
none: false
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: "0"
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: *id002
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: jeweler
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: "0"
|
46
|
+
type: :development
|
47
|
+
prerelease: false
|
48
|
+
version_requirements: *id003
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: git
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: "0"
|
57
|
+
type: :development
|
58
|
+
prerelease: false
|
59
|
+
version_requirements: *id004
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: rake
|
62
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: "0"
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: *id005
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: bundler
|
73
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: "0"
|
79
|
+
type: :development
|
80
|
+
prerelease: false
|
81
|
+
version_requirements: *id006
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: yard
|
84
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: "0"
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: *id007
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
name: shoulda
|
95
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: "0"
|
101
|
+
type: :development
|
102
|
+
prerelease: false
|
103
|
+
version_requirements: *id008
|
104
|
+
- !ruby/object:Gem::Dependency
|
105
|
+
name: rspec
|
106
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
39
107
|
none: false
|
40
108
|
requirements:
|
41
109
|
- - ~>
|
42
110
|
- !ruby/object:Gem::Version
|
43
|
-
hash: 3
|
44
|
-
segments:
|
45
|
-
- 2
|
46
|
-
- 0
|
47
111
|
version: "2.0"
|
48
112
|
type: :development
|
49
|
-
|
50
|
-
|
51
|
-
|
113
|
+
prerelease: false
|
114
|
+
version_requirements: *id009
|
115
|
+
description: Provides support to utilize the OpenSRS API with Ruby/Rails.
|
116
|
+
email: josh@voxxit.com
|
52
117
|
executables: []
|
53
118
|
|
54
119
|
extensions: []
|
@@ -58,23 +123,28 @@ extra_rdoc_files:
|
|
58
123
|
- README.rdoc
|
59
124
|
files:
|
60
125
|
- .document
|
126
|
+
- Gemfile
|
127
|
+
- Gemfile.lock
|
61
128
|
- LICENSE
|
62
129
|
- README.rdoc
|
63
130
|
- Rakefile
|
64
|
-
- VERSION
|
65
131
|
- lib/opensrs.rb
|
66
132
|
- lib/opensrs/response.rb
|
67
133
|
- lib/opensrs/server.rb
|
68
|
-
- lib/opensrs/
|
134
|
+
- lib/opensrs/version.rb
|
135
|
+
- lib/opensrs/xml_processor.rb
|
136
|
+
- lib/opensrs/xml_processor/libxml.rb
|
137
|
+
- lib/opensrs/xml_processor/nokogiri.rb
|
69
138
|
- opensrs.gemspec
|
70
|
-
- spec/opensrs/
|
139
|
+
- spec/opensrs/server_spec.rb
|
140
|
+
- spec/opensrs/version_spec.rb
|
141
|
+
- spec/opensrs/xml_processor/libxml_spec.rb
|
142
|
+
- spec/opensrs/xml_processor/nokogiri_spec.rb
|
71
143
|
- spec/spec_helper.rb
|
72
|
-
- test/opensrs_test.rb
|
73
|
-
- test/test_helper.rb
|
74
144
|
has_rdoc: true
|
75
145
|
homepage: http://github.com/voxxit/opensrs
|
76
|
-
licenses:
|
77
|
-
|
146
|
+
licenses:
|
147
|
+
- MIT
|
78
148
|
post_install_message:
|
79
149
|
rdoc_options: []
|
80
150
|
|
@@ -85,7 +155,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
85
155
|
requirements:
|
86
156
|
- - ">="
|
87
157
|
- !ruby/object:Gem::Version
|
88
|
-
hash:
|
158
|
+
hash: 774700711849179160
|
89
159
|
segments:
|
90
160
|
- 0
|
91
161
|
version: "0"
|
@@ -94,19 +164,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
94
164
|
requirements:
|
95
165
|
- - ">="
|
96
166
|
- !ruby/object:Gem::Version
|
97
|
-
hash: 3
|
98
|
-
segments:
|
99
|
-
- 0
|
100
167
|
version: "0"
|
101
168
|
requirements: []
|
102
169
|
|
103
170
|
rubyforge_project:
|
104
|
-
rubygems_version: 1.
|
171
|
+
rubygems_version: 1.6.2
|
105
172
|
signing_key:
|
106
173
|
specification_version: 3
|
107
|
-
summary: Provides support to
|
108
|
-
test_files:
|
109
|
-
|
110
|
-
- spec/spec_helper.rb
|
111
|
-
- test/opensrs_test.rb
|
112
|
-
- test/test_helper.rb
|
174
|
+
summary: Provides support to utilize the OpenSRS API with Ruby/Rails.
|
175
|
+
test_files: []
|
176
|
+
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.2.1
|
data/lib/opensrs/xml.rb
DELETED
@@ -1,109 +0,0 @@
|
|
1
|
-
require "libxml"
|
2
|
-
|
3
|
-
module OpenSRS
|
4
|
-
class XML
|
5
|
-
include LibXML::XML
|
6
|
-
|
7
|
-
# First, builds REXML elements for the inputted data. Then, it will
|
8
|
-
# go ahead and build the entire XML document to send to OpenSRS.
|
9
|
-
def self.build(data)
|
10
|
-
xml = Document.new
|
11
|
-
xml.root = envelope = Node.new("OPS_envelope")
|
12
|
-
|
13
|
-
envelope << header = Node.new("header")
|
14
|
-
envelope << body = Node.new("body")
|
15
|
-
header << Node.new("version", "0.9")
|
16
|
-
body << data_block = Node.new("data_block")
|
17
|
-
|
18
|
-
data_block << encode_data(data, data_block)
|
19
|
-
|
20
|
-
return xml.to_s
|
21
|
-
end
|
22
|
-
|
23
|
-
# Parses the main data block from OpenSRS and discards
|
24
|
-
# the rest of the response.
|
25
|
-
def self.parse(response)
|
26
|
-
doc = Parser.string(response).parse
|
27
|
-
data_block = doc.find("//OPS_envelope/body/data_block/*")
|
28
|
-
|
29
|
-
raise ArgumentError.new("No data found in document") if !data_block
|
30
|
-
|
31
|
-
return decode_data(data_block)
|
32
|
-
end
|
33
|
-
|
34
|
-
protected
|
35
|
-
|
36
|
-
# Recursively decodes individual data elements from OpenSRS
|
37
|
-
# server response.
|
38
|
-
def self.decode_data(data)
|
39
|
-
data.each do |element|
|
40
|
-
case element.name
|
41
|
-
when "dt_array"
|
42
|
-
arr = []
|
43
|
-
|
44
|
-
element.children.each do |item|
|
45
|
-
next if item.empty?
|
46
|
-
arr[item.attributes["key"].to_i] = decode_data(item)
|
47
|
-
end
|
48
|
-
|
49
|
-
return arr
|
50
|
-
when "dt_assoc"
|
51
|
-
hash = {}
|
52
|
-
|
53
|
-
element.children.each do |item|
|
54
|
-
next if item.empty?
|
55
|
-
hash[item.attributes["key"]] = decode_data(item)
|
56
|
-
end
|
57
|
-
|
58
|
-
return hash
|
59
|
-
when "text", "item", "dt_scalar"
|
60
|
-
next if element.empty?
|
61
|
-
return element.content.strip
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
# Encodes individual elements, and their child elements, for the root
|
67
|
-
# XML document.
|
68
|
-
def self.encode_data(data, container = nil)
|
69
|
-
case data.class.to_s
|
70
|
-
when "Array" then return encode_dt_array(data, container)
|
71
|
-
when "Hash" then return encode_dt_assoc(data, container)
|
72
|
-
when "String", "Numeric", "Date", "Time", "Symbol", "NilClass"
|
73
|
-
return data.to_s
|
74
|
-
else
|
75
|
-
return data.inspect
|
76
|
-
end
|
77
|
-
|
78
|
-
return nil
|
79
|
-
end
|
80
|
-
|
81
|
-
def self.encode_dt_array(data, container)
|
82
|
-
dt_array = Node.new("dt_array")
|
83
|
-
|
84
|
-
data.each_with_index do |item, index|
|
85
|
-
item_node = Node.new("item")
|
86
|
-
item_node["key"] = index.to_s
|
87
|
-
item_node << encode_data(item, item_node)
|
88
|
-
|
89
|
-
dt_array << item_node
|
90
|
-
end
|
91
|
-
|
92
|
-
return dt_array
|
93
|
-
end
|
94
|
-
|
95
|
-
def self.encode_dt_assoc(data, container)
|
96
|
-
dt_assoc = Node.new("dt_assoc")
|
97
|
-
|
98
|
-
data.each do |key, value|
|
99
|
-
item_node = Node.new("item")
|
100
|
-
item_node["key"] = key.to_s
|
101
|
-
item_node << encode_data(value, item_node)
|
102
|
-
|
103
|
-
dt_assoc << item_node
|
104
|
-
end
|
105
|
-
|
106
|
-
return dt_assoc
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
data/test/opensrs_test.rb
DELETED
data/test/test_helper.rb
DELETED