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.
@@ -1 +1,5 @@
1
- require 'opensrs/xml.rb'
1
+ require 'opensrs/xml_processor.rb'
2
+ require 'opensrs/xml_processor/libxml.rb'
3
+ require 'opensrs/xml_processor/nokogiri.rb'
4
+ require 'opensrs/server.rb'
5
+ require 'opensrs/version.rb'
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
- segments:
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-01-31 00:00:00 -05:00
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
- hash: 3
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: rspec
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
- version_requirements: *id002
50
- description: Provides support to utilise the OpenSRS API with Ruby/Rails.
51
- email: josh@voxx.it
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/xml.rb
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/xml_spec.rb
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: 3
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.4.2
171
+ rubygems_version: 1.6.2
105
172
  signing_key:
106
173
  specification_version: 3
107
- summary: Provides support to utilise the OpenSRS API with Ruby/Rails.
108
- test_files:
109
- - spec/opensrs/xml_spec.rb
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
@@ -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
@@ -1,7 +0,0 @@
1
- require 'test_helper'
2
-
3
- class OpenSRSTest < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
6
- end
7
- end
@@ -1,10 +0,0 @@
1
- require 'rubygems'
2
- require 'test/unit'
3
- require 'shoulda'
4
-
5
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
- $LOAD_PATH.unshift(File.dirname(__FILE__))
7
- require 'opensrs'
8
-
9
- class Test::Unit::TestCase
10
- end