rforce 0.10 → 0.15

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.
@@ -2,12 +2,17 @@ module RForce
2
2
  # Allows indexing hashes like method calls: hash.key
3
3
  # to supplement the traditional way of indexing: hash[key]
4
4
  module MethodKeys
5
+ def respond_to_missing?(*)
6
+ return true if respond_to?(:[])
7
+ super
8
+ end
9
+
5
10
  def method_missing(method, *args)
6
- raise NoMethodError unless respond_to?('[]')
7
- self[method]
11
+ return self[method] if respond_to?(:[])
12
+ super
8
13
  end
9
14
  end
10
-
15
+
11
16
  class MethodHash < Hash
12
17
  include MethodKeys
13
18
  end
@@ -1,14 +1,10 @@
1
1
  begin; require 'rforce/soap_response_nokogiri'; rescue LoadError; end
2
- begin; require 'rforce/soap_response_hpricot'; rescue LoadError; end
3
- begin; require 'rforce/soap_response_expat'; rescue LoadError; end
4
2
  require 'rforce/soap_response_rexml'
5
3
 
6
4
 
7
5
  module RForce
8
6
  # Use the fastest XML parser available.
9
7
  SoapResponse =
10
- (RForce::const_get(:SoapResponseExpat) rescue nil) ||
11
8
  (RForce::const_get(:SoapResponseNokogiri) rescue nil) ||
12
- (RForce::const_get(:SoapResponseHpricot) rescue nil) ||
13
9
  SoapResponseRexml
14
10
  end
@@ -1,3 +1,3 @@
1
1
  module RForce
2
- VERSION = '0.10'
2
+ VERSION = '0.15'
3
3
  end
data/rforce.gemspec ADDED
@@ -0,0 +1,35 @@
1
+ lib = File.expand_path("lib", __dir__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "rforce/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "rforce"
7
+ spec.version = RForce::VERSION
8
+ spec.authors = ["Erin Dees"]
9
+ spec.email = ["undees@gmail.com"]
10
+
11
+ spec.summary = %q{A simple, usable binding to the Salesforce API.}
12
+ spec.homepage = "https://github.com/undees/rforce"
13
+ spec.license = "MIT"
14
+
15
+ spec.metadata["homepage_uri"] = spec.homepage
16
+ spec.metadata["source_code_uri"] = "https://github.com/undees/rforce"
17
+ spec.metadata["changelog_uri"] = "https://github.com/undees/rforce/"
18
+
19
+ # Specify which files should be added to the gem when it is released.
20
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
21
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
22
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|lib/tasks)/}) }
23
+ end
24
+ spec.require_paths = ["lib"]
25
+
26
+ spec.add_runtime_dependency "builder", "~> 3.0"
27
+ spec.add_runtime_dependency "oauth", "~> 0.5.5"
28
+
29
+ spec.add_development_dependency "bundler", "~> 2.0"
30
+ spec.add_development_dependency "rake", "~> 12.3.3"
31
+ spec.add_development_dependency "rspec", "~> 3.0"
32
+
33
+ # Optional XML parsing engines
34
+ spec.add_development_dependency "nokogiri", "~> 1.10.8"
35
+ end
metadata CHANGED
@@ -1,214 +1,150 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rforce
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.10'
5
- prerelease:
4
+ version: '0.15'
6
5
  platform: ruby
7
6
  authors:
8
- - Ian Dees
7
+ - Erin Dees
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-09-12 00:00:00.000000000 Z
11
+ date: 2021-04-22 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: builder
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
19
  version: '3.0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
26
  version: '3.0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: oauth
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ~>
31
+ - - "~>"
36
32
  - !ruby/object:Gem::Version
37
- version: '0.4'
33
+ version: 0.5.5
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ~>
38
+ - - "~>"
44
39
  - !ruby/object:Gem::Version
45
- version: '0.4'
40
+ version: 0.5.5
46
41
  - !ruby/object:Gem::Dependency
47
- name: rspec
42
+ name: bundler
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ~>
45
+ - - "~>"
52
46
  - !ruby/object:Gem::Version
53
- version: '2.8'
47
+ version: '2.0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ~>
52
+ - - "~>"
60
53
  - !ruby/object:Gem::Version
61
- version: '2.8'
54
+ version: '2.0'
62
55
  - !ruby/object:Gem::Dependency
63
- name: hoe-gemspec2
56
+ name: rake
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ~>
59
+ - - "~>"
68
60
  - !ruby/object:Gem::Version
69
- version: '1.1'
61
+ version: 12.3.3
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ~>
66
+ - - "~>"
76
67
  - !ruby/object:Gem::Version
77
- version: '1.1'
68
+ version: 12.3.3
78
69
  - !ruby/object:Gem::Dependency
79
- name: hpricot
70
+ name: rspec
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ~>
73
+ - - "~>"
84
74
  - !ruby/object:Gem::Version
85
- version: '0.8'
75
+ version: '3.0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ~>
80
+ - - "~>"
92
81
  - !ruby/object:Gem::Version
93
- version: '0.8'
82
+ version: '3.0'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: nokogiri
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ~>
100
- - !ruby/object:Gem::Version
101
- version: '1.5'
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ~>
108
- - !ruby/object:Gem::Version
109
- version: '1.5'
110
- - !ruby/object:Gem::Dependency
111
- name: xmlparser
112
- requirement: !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
115
- - - ~>
116
- - !ruby/object:Gem::Version
117
- version: '0.7'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ~>
124
- - !ruby/object:Gem::Version
125
- version: '0.7'
126
- - !ruby/object:Gem::Dependency
127
- name: rdoc
128
- requirement: !ruby/object:Gem::Requirement
129
- none: false
130
- requirements:
131
- - - ~>
132
- - !ruby/object:Gem::Version
133
- version: '3.10'
134
- type: :development
135
- prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - ~>
140
- - !ruby/object:Gem::Version
141
- version: '3.10'
142
- - !ruby/object:Gem::Dependency
143
- name: hoe
144
- requirement: !ruby/object:Gem::Requirement
145
- none: false
146
86
  requirements:
147
- - - ~>
87
+ - - "~>"
148
88
  - !ruby/object:Gem::Version
149
- version: '2.13'
89
+ version: 1.10.8
150
90
  type: :development
151
91
  prerelease: false
152
92
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
93
  requirements:
155
- - - ~>
94
+ - - "~>"
156
95
  - !ruby/object:Gem::Version
157
- version: '2.13'
158
- description: RForce is a simple, usable binding to the Salesforce API.
96
+ version: 1.10.8
97
+ description:
159
98
  email:
160
99
  - undees@gmail.com
161
100
  executables: []
162
101
  extensions: []
163
- extra_rdoc_files:
164
- - History.txt
165
- - Manifest.txt
166
- - README.txt
102
+ extra_rdoc_files: []
167
103
  files:
168
- - History.txt
169
- - Manifest.txt
170
- - README.txt
104
+ - ".gitignore"
105
+ - ".travis.yml"
106
+ - CHANGELOG.txt
107
+ - CODE_OF_CONDUCT.md
108
+ - Gemfile
109
+ - Gemfile.ci
110
+ - README.rdoc
171
111
  - Rakefile
112
+ - examples/oauth_setup.rb
113
+ - examples/oauth_use.rb
114
+ - examples/simple.rb
172
115
  - lib/rforce.rb
173
116
  - lib/rforce/binding.rb
174
117
  - lib/rforce/method_keys.rb
175
118
  - lib/rforce/soap_pullable.rb
176
119
  - lib/rforce/soap_response.rb
177
- - lib/rforce/soap_response_expat.rb
178
- - lib/rforce/soap_response_hpricot.rb
179
120
  - lib/rforce/soap_response_nokogiri.rb
180
121
  - lib/rforce/soap_response_rexml.rb
181
122
  - lib/rforce/version.rb
182
- - spec/rforce_spec.rb
183
- - spec/soap-response.xml
184
- - spec/spec.opts
185
- - spec/spec_helper.rb
186
- - tasks/timing.rake
187
- - .gemtest
188
- homepage: http://rforce.rubyforge.org
189
- licenses: []
123
+ - rforce.gemspec
124
+ homepage: https://github.com/undees/rforce
125
+ licenses:
126
+ - MIT
127
+ metadata:
128
+ homepage_uri: https://github.com/undees/rforce
129
+ source_code_uri: https://github.com/undees/rforce
130
+ changelog_uri: https://github.com/undees/rforce/
190
131
  post_install_message:
191
- rdoc_options:
192
- - --main
193
- - README.txt
132
+ rdoc_options: []
194
133
  require_paths:
195
134
  - lib
196
135
  required_ruby_version: !ruby/object:Gem::Requirement
197
- none: false
198
136
  requirements:
199
- - - ! '>='
137
+ - - ">="
200
138
  - !ruby/object:Gem::Version
201
139
  version: '0'
202
140
  required_rubygems_version: !ruby/object:Gem::Requirement
203
- none: false
204
141
  requirements:
205
- - - ! '>='
142
+ - - ">="
206
143
  - !ruby/object:Gem::Version
207
144
  version: '0'
208
145
  requirements: []
209
- rubyforge_project: rforce
210
- rubygems_version: 1.8.23
146
+ rubygems_version: 3.1.4
211
147
  signing_key:
212
- specification_version: 3
213
- summary: RForce is a simple, usable binding to the Salesforce API.
148
+ specification_version: 4
149
+ summary: A simple, usable binding to the Salesforce API.
214
150
  test_files: []
data/.gemtest DELETED
File without changes
data/Manifest.txt DELETED
@@ -1,19 +0,0 @@
1
- History.txt
2
- Manifest.txt
3
- README.txt
4
- Rakefile
5
- lib/rforce.rb
6
- lib/rforce/binding.rb
7
- lib/rforce/method_keys.rb
8
- lib/rforce/soap_pullable.rb
9
- lib/rforce/soap_response.rb
10
- lib/rforce/soap_response_expat.rb
11
- lib/rforce/soap_response_hpricot.rb
12
- lib/rforce/soap_response_nokogiri.rb
13
- lib/rforce/soap_response_rexml.rb
14
- lib/rforce/version.rb
15
- spec/rforce_spec.rb
16
- spec/soap-response.xml
17
- spec/spec.opts
18
- spec/spec_helper.rb
19
- tasks/timing.rake
@@ -1,36 +0,0 @@
1
- require 'xml/parser'
2
- require 'rforce/soap_pullable'
3
-
4
- module RForce
5
- class SoapResponseExpat
6
- include SoapPullable
7
- include MethodKeys
8
-
9
- def initialize(content)
10
- @content = content
11
- end
12
-
13
- def parse
14
- @current_value = nil
15
- @stack = []
16
- @parsed = MethodHash.new
17
- @done = false
18
- @namespaces = []
19
-
20
- XML::Parser.new.parse(@content) do |type, name, data|
21
- case type
22
- when XML::Parser::START_ELEM then
23
- tag_start name, data
24
- when XML::Parser::CDATA then
25
- text data
26
- when XML::Parser::END_ELEM then
27
- tag_end name
28
- end
29
-
30
- break if @done
31
- end
32
-
33
- @parsed
34
- end
35
- end
36
- end
@@ -1,90 +0,0 @@
1
- require 'hpricot'
2
- require 'cgi'
3
-
4
-
5
- module RForce
6
- class SoapResponseHpricot
7
- # Parses an XML string into structured data.
8
- def initialize(content)
9
- @content = content
10
- end
11
-
12
- # Digests an XML DOM node into nested Ruby types.
13
- def parse
14
- document = Hpricot.XML(@content)
15
- node = document % 'soapenv:Body'
16
- self.class.node_to_ruby node
17
- end
18
-
19
- private
20
-
21
- def self.unescapeXML(string)
22
- CGI.unescapeHTML(string).gsub("&apos;", "'")
23
- end
24
-
25
- def self.node_to_ruby(node)
26
- # Convert text nodes into simple strings.
27
- children = (node.children || []).reject do |c|
28
- c.is_a?(Hpricot::Text) && c.to_s.strip.empty?
29
- end
30
-
31
- if node.is_a?(Hpricot::Text)
32
- return convert(SoapResponseHpricot.unescapeXML(node.inspect[1..-2]))
33
- end
34
-
35
- if children.first.is_a?(Hpricot::Text)
36
- return convert(SoapResponseHpricot.unescapeXML(children.first.inspect[1..-2]))
37
- end
38
-
39
- # Convert nodes with children into MethodHashes.
40
- elements = MethodHash.new
41
-
42
- # Add all the element's children to the hash.
43
- children.each do |e|
44
- next if e.is_a?(Hpricot::Text) && e.to_s.strip.empty?
45
- name = e.name
46
-
47
- if name.include? ':'
48
- name = name.split(':').last
49
- end
50
-
51
- name = name.to_sym
52
-
53
- case elements[name]
54
- # The most common case: unique child element tags.
55
- when NilClass then
56
- # <records> contents are always arrays
57
- elements[name] = :records == name ? [node_to_ruby(e)] : node_to_ruby(e)
58
-
59
- # Non-unique child elements become arrays:
60
-
61
- # We've already created the array: just
62
- # add the element.
63
- when Array then
64
- elements[name] << node_to_ruby(e)
65
-
66
- # We haven't created the array yet: do so,
67
- # then put the existing element in, followed
68
- # by the new one.
69
- else
70
- next if :Id == name # avoid duplicate <Id> tags
71
- elements[name] = [elements[name]]
72
- elements[name] << node_to_ruby(e)
73
- end
74
- end
75
-
76
- return elements.empty? ? nil : elements
77
- end
78
-
79
- def self.convert(string)
80
- return nil if string.nil?
81
- s = string.strip
82
-
83
- case s
84
- when '' then nil
85
- when 'true', 'false' then ('true' == s)
86
- else s
87
- end
88
- end
89
- end
90
- end