restforce 4.2.1 → 5.0.3
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.
- checksums.yaml +4 -4
- data/.circleci/config.yml +9 -9
- data/.github/ISSUE_TEMPLATE/unhandled-salesforce-error.md +17 -0
- data/.rubocop.yml +4 -3
- data/CHANGELOG.md +41 -0
- data/CONTRIBUTING.md +21 -1
- data/Dockerfile +31 -0
- data/Gemfile +0 -1
- data/README.md +43 -19
- data/UPGRADING.md +38 -0
- data/docker-compose.yml +7 -0
- data/lib/restforce.rb +4 -7
- data/lib/restforce/collection.rb +7 -2
- data/lib/restforce/concerns/api.rb +1 -1
- data/lib/restforce/concerns/caching.rb +7 -0
- data/lib/restforce/concerns/picklists.rb +1 -1
- data/lib/restforce/config.rb +4 -1
- data/lib/restforce/error_code.rb +418 -0
- data/lib/restforce/file_part.rb +24 -0
- data/lib/restforce/mash.rb +8 -3
- data/lib/restforce/middleware.rb +2 -0
- data/lib/restforce/middleware/caching.rb +1 -1
- data/lib/restforce/middleware/logger.rb +3 -2
- data/lib/restforce/middleware/raise_error.rb +3 -4
- data/lib/restforce/version.rb +1 -1
- data/restforce.gemspec +11 -12
- data/spec/integration/abstract_client_spec.rb +16 -4
- data/spec/spec_helper.rb +14 -1
- data/spec/support/fixture_helpers.rb +1 -3
- data/spec/unit/collection_spec.rb +18 -0
- data/spec/unit/concerns/caching_spec.rb +26 -0
- data/spec/unit/concerns/connection_spec.rb +2 -2
- data/spec/unit/error_code_spec.rb +61 -0
- data/spec/unit/mash_spec.rb +5 -0
- data/spec/unit/middleware/authentication_spec.rb +7 -5
- data/spec/unit/middleware/raise_error_spec.rb +9 -0
- data/spec/unit/signed_request_spec.rb +1 -1
- metadata +31 -38
- data/lib/restforce/upload_io.rb +0 -9
data/lib/restforce/mash.rb
CHANGED
@@ -11,9 +11,10 @@ module Restforce
|
|
11
11
|
# appropriate Restforce::Collection, Restforce::SObject and
|
12
12
|
# Restforce::Mash objects.
|
13
13
|
def build(val, client)
|
14
|
-
|
14
|
+
case val
|
15
|
+
when Array
|
15
16
|
val.collect { |a_val| self.build(a_val, client) }
|
16
|
-
|
17
|
+
when Hash
|
17
18
|
self.klass(val).new(val, client)
|
18
19
|
else
|
19
20
|
val
|
@@ -28,7 +29,7 @@ module Restforce
|
|
28
29
|
# of sobject records.
|
29
30
|
Restforce::Collection
|
30
31
|
elsif val.key? 'attributes'
|
31
|
-
case (
|
32
|
+
case val.dig('attributes', 'type')
|
32
33
|
when "Attachment"
|
33
34
|
Restforce::Attachment
|
34
35
|
when "Document"
|
@@ -55,6 +56,9 @@ module Restforce
|
|
55
56
|
self.class.new(self, @client, self.default)
|
56
57
|
end
|
57
58
|
|
59
|
+
# The #convert_value method and its signature are part of Hashie::Mash's API, so we
|
60
|
+
# can't unilaterally decide to change `duping` to be a keyword argument
|
61
|
+
# rubocop:disable Style/OptionalBooleanParameter
|
58
62
|
def convert_value(val, duping = false)
|
59
63
|
case val
|
60
64
|
when self.class
|
@@ -68,5 +72,6 @@ module Restforce
|
|
68
72
|
val
|
69
73
|
end
|
70
74
|
end
|
75
|
+
# rubocop:enable Style/OptionalBooleanParameter
|
71
76
|
end
|
72
77
|
end
|
data/lib/restforce/middleware.rb
CHANGED
@@ -11,7 +11,7 @@ module Restforce
|
|
11
11
|
@options = options
|
12
12
|
@logger = logger || begin
|
13
13
|
require 'logger'
|
14
|
-
::Logger.new(
|
14
|
+
::Logger.new($stdout)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
@@ -36,7 +36,8 @@ module Restforce
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def dump(hash)
|
39
|
-
|
39
|
+
dumped_pairs = hash.map { |k, v| " #{k}: #{v.inspect}" }.join("\n")
|
40
|
+
"\n#{dumped_pairs}"
|
40
41
|
end
|
41
42
|
end
|
42
43
|
end
|
@@ -11,9 +11,9 @@ module Restforce
|
|
11
11
|
response_values
|
12
12
|
)
|
13
13
|
when 401
|
14
|
-
raise Restforce::UnauthorizedError,
|
14
|
+
raise Restforce::UnauthorizedError.new(message, response_values)
|
15
15
|
when 404
|
16
|
-
raise Restforce::NotFoundError,
|
16
|
+
raise Restforce::NotFoundError.new(message, response_values)
|
17
17
|
when 413
|
18
18
|
raise Restforce::EntityTooLargeError.new(
|
19
19
|
"413: Request Entity Too Large",
|
@@ -56,8 +56,7 @@ module Restforce
|
|
56
56
|
def exception_class_for_error_code(error_code)
|
57
57
|
return Restforce::ResponseError unless ERROR_CODE_MATCHER.match?(error_code)
|
58
58
|
|
59
|
-
|
60
|
-
Restforce::ErrorCode.const_get(constant_name)
|
59
|
+
Restforce::ErrorCode.get_exception_class(error_code)
|
61
60
|
end
|
62
61
|
end
|
63
62
|
end
|
data/lib/restforce/version.rb
CHANGED
data/restforce.gemspec
CHANGED
@@ -3,11 +3,11 @@
|
|
3
3
|
require File.expand_path('lib/restforce/version', __dir__)
|
4
4
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
|
-
gem.authors = ["Eric J. Holmes"
|
7
|
-
gem.email = ["
|
8
|
-
gem.description = 'A lightweight
|
9
|
-
gem.summary = 'A lightweight
|
10
|
-
gem.homepage = "
|
6
|
+
gem.authors = ["Tim Rogers", "Eric J. Holmes"]
|
7
|
+
gem.email = ["me@timrogers.co.uk", "eric@ejholmes.net"]
|
8
|
+
gem.description = 'A lightweight Ruby client for the Salesforce REST API'
|
9
|
+
gem.summary = 'A lightweight Ruby client for the Salesforce REST API'
|
10
|
+
gem.homepage = "https://restforce.github.io/"
|
11
11
|
gem.license = "MIT"
|
12
12
|
|
13
13
|
gem.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
|
@@ -22,12 +22,11 @@ Gem::Specification.new do |gem|
|
|
22
22
|
'changelog_uri' => 'https://github.com/restforce/restforce/blob/master/CHANGELOG.md'
|
23
23
|
}
|
24
24
|
|
25
|
-
gem.required_ruby_version = '>= 2.
|
25
|
+
gem.required_ruby_version = '>= 2.5'
|
26
26
|
|
27
|
-
gem.add_dependency 'faraday', '<=
|
28
|
-
gem.add_dependency 'faraday_middleware', ['>= 0.8.8', '<=
|
27
|
+
gem.add_dependency 'faraday', '<= 2.0', '>= 0.9.0'
|
28
|
+
gem.add_dependency 'faraday_middleware', ['>= 0.8.8', '<= 2.0']
|
29
29
|
|
30
|
-
gem.add_dependency 'json', '>= 1.7.5'
|
31
30
|
gem.add_dependency 'jwt', ['>= 1.5.6']
|
32
31
|
|
33
32
|
gem.add_dependency 'hashie', '>= 1.2.0', '< 5.0'
|
@@ -35,7 +34,7 @@ Gem::Specification.new do |gem|
|
|
35
34
|
gem.add_development_dependency 'faye' unless RUBY_PLATFORM == 'java'
|
36
35
|
gem.add_development_dependency 'rspec', '~> 2.14.0'
|
37
36
|
gem.add_development_dependency 'rspec_junit_formatter', '~> 0.4.1'
|
38
|
-
gem.add_development_dependency 'rubocop', '~> 0.
|
39
|
-
gem.add_development_dependency 'simplecov', '~> 0.
|
40
|
-
gem.add_development_dependency 'webmock', '~> 3.
|
37
|
+
gem.add_development_dependency 'rubocop', '~> 0.90.0'
|
38
|
+
gem.add_development_dependency 'simplecov', '~> 0.19.0'
|
39
|
+
gem.add_development_dependency 'webmock', '~> 3.8.3'
|
41
40
|
end
|
@@ -86,22 +86,34 @@ shared_examples_for Restforce::AbstractClient do
|
|
86
86
|
end
|
87
87
|
|
88
88
|
context 'with multipart' do
|
89
|
-
# rubocop:disable
|
89
|
+
# rubocop:disable Layout/LineLength
|
90
90
|
requests 'sobjects/Account',
|
91
91
|
method: :post,
|
92
|
-
with_body: %r(----boundary_string\r\nContent-Disposition: form-data; name
|
92
|
+
with_body: %r(----boundary_string\r\nContent-Disposition: form-data; name="entity_content"\r\nContent-Type: application/json\r\n\r\n{"Name":"Foobar"}\r\n----boundary_string\r\nContent-Disposition: form-data; name="Blob"; filename="blob.jpg"\r\nContent-Length: 42171\r\nContent-Type: image/jpeg\r\nContent-Transfer-Encoding: binary),
|
93
93
|
fixture: 'sobject/create_success_response'
|
94
|
-
# rubocop:enable
|
94
|
+
# rubocop:enable Layout/LineLength
|
95
95
|
|
96
96
|
subject do
|
97
97
|
client.create('Account', Name: 'Foobar',
|
98
|
-
Blob: Restforce::
|
98
|
+
Blob: Restforce::FilePart.new(
|
99
99
|
File.expand_path('../fixtures/blob.jpg', __dir__),
|
100
100
|
'image/jpeg'
|
101
101
|
))
|
102
102
|
end
|
103
103
|
|
104
104
|
it { should eq 'some_id' }
|
105
|
+
|
106
|
+
context 'with deprecated UploadIO' do
|
107
|
+
subject do
|
108
|
+
client.create('Account', Name: 'Foobar',
|
109
|
+
Blob: Restforce::UploadIO.new(
|
110
|
+
File.expand_path('../fixtures/blob.jpg', __dir__),
|
111
|
+
'image/jpeg'
|
112
|
+
))
|
113
|
+
end
|
114
|
+
|
115
|
+
it { should eq 'some_id' }
|
116
|
+
end
|
105
117
|
end
|
106
118
|
end
|
107
119
|
|
data/spec/spec_helper.rb
CHANGED
@@ -15,8 +15,21 @@ RSpec.configure do |config|
|
|
15
15
|
config.order = 'random'
|
16
16
|
config.filter_run focus: true
|
17
17
|
config.run_all_when_everything_filtered = true
|
18
|
+
|
19
|
+
original_stderr = $stderr
|
20
|
+
original_stdout = $stdout
|
21
|
+
config.before(:all) do
|
22
|
+
# Redirect stderr and stdout
|
23
|
+
$stderr = File.open(File::NULL, "w")
|
24
|
+
$stdout = File.open(File::NULL, "w")
|
25
|
+
end
|
26
|
+
config.after(:all) do
|
27
|
+
$stderr = original_stderr
|
28
|
+
$stdout = original_stdout
|
29
|
+
end
|
18
30
|
end
|
19
31
|
|
20
32
|
# Requires supporting ruby files with custom matchers and macros, etc,
|
21
33
|
# in spec/support/ and its subdirectories.
|
22
|
-
Dir[File.join(File.dirname(__FILE__), "support/**/*.rb")]
|
34
|
+
paths = Dir[File.join(File.dirname(__FILE__), "support/**/*.rb")]
|
35
|
+
paths.sort.each { |f| require f }
|
@@ -22,9 +22,7 @@ module FixtureHelpers
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def stub_login_request(*)
|
25
|
-
|
26
|
-
|
27
|
-
stub
|
25
|
+
stub_request(:post, "https://login.salesforce.com/services/oauth2/token")
|
28
26
|
end
|
29
27
|
|
30
28
|
def fixture(filename)
|
@@ -62,4 +62,22 @@ describe Restforce::Collection do
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
end
|
65
|
+
|
66
|
+
describe '#empty?' do
|
67
|
+
subject(:empty?) do
|
68
|
+
described_class.new(JSON.parse(fixture(sobject_fixture)), client).empty?
|
69
|
+
end
|
70
|
+
|
71
|
+
context 'with size 1' do
|
72
|
+
let(:sobject_fixture) { 'sobject/query_success_response' }
|
73
|
+
|
74
|
+
it { should be_false }
|
75
|
+
end
|
76
|
+
|
77
|
+
context 'with size 0' do
|
78
|
+
let(:sobject_fixture) { 'sobject/query_empty_response' }
|
79
|
+
|
80
|
+
it { should be_true }
|
81
|
+
end
|
82
|
+
end
|
65
83
|
end
|
@@ -28,4 +28,30 @@ describe Restforce::Concerns::Caching do
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
31
|
+
|
32
|
+
describe '.with_caching' do
|
33
|
+
let(:options) { double('Options') }
|
34
|
+
|
35
|
+
before do
|
36
|
+
client.stub options: options
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'runs the block with caching enabled' do
|
40
|
+
options.should_receive(:[]=).with(:use_cache, true)
|
41
|
+
options.should_receive(:[]=).with(:use_cache, false)
|
42
|
+
expect { |b| client.with_caching(&b) }.to yield_control
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'when an exception is raised' do
|
46
|
+
it 'ensures the :use_cache is set to false' do
|
47
|
+
options.should_receive(:[]=).with(:use_cache, true)
|
48
|
+
options.should_receive(:[]=).with(:use_cache, false)
|
49
|
+
expect {
|
50
|
+
client.with_caching do
|
51
|
+
raise 'Foo'
|
52
|
+
end
|
53
|
+
}.to raise_error 'Foo'
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
31
57
|
end
|
@@ -73,9 +73,9 @@ describe Restforce::Concerns::Connection do
|
|
73
73
|
Restforce.stub(log?: true)
|
74
74
|
end
|
75
75
|
|
76
|
-
it "must always be used
|
76
|
+
it "must always be used as the last handler" do
|
77
77
|
client.middleware.handlers.reverse.index(Restforce::Middleware::Logger).
|
78
|
-
should eq
|
78
|
+
should eq 0
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Restforce::ErrorCode do
|
6
|
+
describe "mapping of error codes to classes" do
|
7
|
+
subject(:error_exception_classes) { described_class::ERROR_EXCEPTION_CLASSES }
|
8
|
+
|
9
|
+
let(:exception_classes) do
|
10
|
+
described_class.constants.
|
11
|
+
map { |constant_name| described_class.const_get(constant_name) }.
|
12
|
+
select { |constant| constant.is_a?(Class) }
|
13
|
+
end
|
14
|
+
|
15
|
+
it "maps all defined exception classes to an error code" do
|
16
|
+
exception_classes.each do |exception_class|
|
17
|
+
expect(error_exception_classes.values).to include(exception_class)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
it "maps all error codes to a defined exception class" do
|
22
|
+
error_exception_classes.each_value do |mapped_exception_class|
|
23
|
+
expect(exception_classes).to include(mapped_exception_class)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '.get_exception_class' do
|
29
|
+
context 'when a non-existent error code is looked up' do
|
30
|
+
let(:new_error_code) { 'ANOTHER_NEW_ERROR_CODE' }
|
31
|
+
subject { described_class.get_exception_class(new_error_code) }
|
32
|
+
|
33
|
+
it { should be Restforce::ResponseError }
|
34
|
+
|
35
|
+
it 'outputs a warning' do
|
36
|
+
expect(Warning).to receive(:warn)
|
37
|
+
subject
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'when a known error code is looked up' do
|
42
|
+
let(:existing_error_code) { "ALL_OR_NONE_OPERATION_ROLLED_BACK" }
|
43
|
+
let(:existing_error) { described_class::AllOrNoneOperationRolledBack }
|
44
|
+
|
45
|
+
subject do
|
46
|
+
described_class.get_exception_class(existing_error_code)
|
47
|
+
end
|
48
|
+
|
49
|
+
it { should < Restforce::ResponseError }
|
50
|
+
|
51
|
+
it 'returns existing error' do
|
52
|
+
should be(existing_error)
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'does not output a warning' do
|
56
|
+
expect(Warning).to_not receive(:warn)
|
57
|
+
subject
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
data/spec/unit/mash_spec.rb
CHANGED
@@ -33,6 +33,11 @@ describe Restforce::Mash do
|
|
33
33
|
let(:input) { { 'attributes' => { 'type' => 'Document' } } }
|
34
34
|
it { should eq Restforce::Document }
|
35
35
|
end
|
36
|
+
|
37
|
+
context 'when the attributes value is nil' do
|
38
|
+
let(:input) { { 'attributes' => nil } }
|
39
|
+
it { should eq Restforce::SObject }
|
40
|
+
end
|
36
41
|
end
|
37
42
|
|
38
43
|
context 'else' do
|
@@ -57,10 +57,10 @@ describe Restforce::Middleware::Authentication do
|
|
57
57
|
end
|
58
58
|
|
59
59
|
its(:handlers) {
|
60
|
-
should include FaradayMiddleware::ParseJson
|
61
|
-
Faraday::Adapter::NetHttp
|
60
|
+
should include FaradayMiddleware::ParseJson
|
62
61
|
}
|
63
62
|
its(:handlers) { should_not include Restforce::Middleware::Logger }
|
63
|
+
its(:adapter) { should eq Faraday::Adapter::NetHttp }
|
64
64
|
end
|
65
65
|
|
66
66
|
context 'with logging enabled' do
|
@@ -70,8 +70,9 @@ describe Restforce::Middleware::Authentication do
|
|
70
70
|
|
71
71
|
its(:handlers) {
|
72
72
|
should include FaradayMiddleware::ParseJson,
|
73
|
-
Restforce::Middleware::Logger
|
73
|
+
Restforce::Middleware::Logger
|
74
74
|
}
|
75
|
+
its(:adapter) { should eq Faraday::Adapter::NetHttp }
|
75
76
|
end
|
76
77
|
|
77
78
|
context 'with specified adapter' do
|
@@ -80,8 +81,9 @@ describe Restforce::Middleware::Authentication do
|
|
80
81
|
end
|
81
82
|
|
82
83
|
its(:handlers) {
|
83
|
-
should include FaradayMiddleware::ParseJson
|
84
|
+
should include FaradayMiddleware::ParseJson
|
84
85
|
}
|
86
|
+
its(:adapter) { should eq Faraday::Adapter::Typhoeus }
|
85
87
|
end
|
86
88
|
end
|
87
89
|
|
@@ -94,7 +96,7 @@ describe Restforce::Middleware::Authentication do
|
|
94
96
|
context 'when response.body is present' do
|
95
97
|
let(:response) {
|
96
98
|
Faraday::Response.new(
|
97
|
-
|
99
|
+
response_body: { 'error' => 'error', 'error_description' => 'description' },
|
98
100
|
status: 401
|
99
101
|
)
|
100
102
|
}
|
@@ -85,5 +85,14 @@ describe Restforce::Middleware::RaiseError do
|
|
85
85
|
"(error code missing): #{body}"
|
86
86
|
end
|
87
87
|
end
|
88
|
+
|
89
|
+
context 'when error code is not already defined' do
|
90
|
+
let(:body) { { 'errorCode' => 'SOMETHING_UNDEFINED' } }
|
91
|
+
let(:status) { 400 }
|
92
|
+
|
93
|
+
it 'raises a generic Restforce::ResponseError' do
|
94
|
+
expect { on_complete }.to raise_error Restforce::ResponseError
|
95
|
+
end
|
96
|
+
end
|
88
97
|
end
|
89
98
|
end
|
metadata
CHANGED
@@ -1,36 +1,36 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: restforce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Eric J. Holmes
|
8
7
|
- Tim Rogers
|
8
|
+
- Eric J. Holmes
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2020-09-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
+
- - "<="
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '2.0'
|
18
21
|
- - ">="
|
19
22
|
- !ruby/object:Gem::Version
|
20
23
|
version: 0.9.0
|
21
|
-
- - "<="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: '1.0'
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
27
27
|
requirements:
|
28
|
+
- - "<="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '2.0'
|
28
31
|
- - ">="
|
29
32
|
- !ruby/object:Gem::Version
|
30
33
|
version: 0.9.0
|
31
|
-
- - "<="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '1.0'
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: faraday_middleware
|
36
36
|
requirement: !ruby/object:Gem::Requirement
|
@@ -40,7 +40,7 @@ dependencies:
|
|
40
40
|
version: 0.8.8
|
41
41
|
- - "<="
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: '
|
43
|
+
version: '2.0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
46
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -50,21 +50,7 @@ dependencies:
|
|
50
50
|
version: 0.8.8
|
51
51
|
- - "<="
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
54
|
-
- !ruby/object:Gem::Dependency
|
55
|
-
name: json
|
56
|
-
requirement: !ruby/object:Gem::Requirement
|
57
|
-
requirements:
|
58
|
-
- - ">="
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: 1.7.5
|
61
|
-
type: :runtime
|
62
|
-
prerelease: false
|
63
|
-
version_requirements: !ruby/object:Gem::Requirement
|
64
|
-
requirements:
|
65
|
-
- - ">="
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: 1.7.5
|
53
|
+
version: '2.0'
|
68
54
|
- !ruby/object:Gem::Dependency
|
69
55
|
name: jwt
|
70
56
|
requirement: !ruby/object:Gem::Requirement
|
@@ -147,62 +133,66 @@ dependencies:
|
|
147
133
|
requirements:
|
148
134
|
- - "~>"
|
149
135
|
- !ruby/object:Gem::Version
|
150
|
-
version: 0.
|
136
|
+
version: 0.90.0
|
151
137
|
type: :development
|
152
138
|
prerelease: false
|
153
139
|
version_requirements: !ruby/object:Gem::Requirement
|
154
140
|
requirements:
|
155
141
|
- - "~>"
|
156
142
|
- !ruby/object:Gem::Version
|
157
|
-
version: 0.
|
143
|
+
version: 0.90.0
|
158
144
|
- !ruby/object:Gem::Dependency
|
159
145
|
name: simplecov
|
160
146
|
requirement: !ruby/object:Gem::Requirement
|
161
147
|
requirements:
|
162
148
|
- - "~>"
|
163
149
|
- !ruby/object:Gem::Version
|
164
|
-
version: 0.
|
150
|
+
version: 0.19.0
|
165
151
|
type: :development
|
166
152
|
prerelease: false
|
167
153
|
version_requirements: !ruby/object:Gem::Requirement
|
168
154
|
requirements:
|
169
155
|
- - "~>"
|
170
156
|
- !ruby/object:Gem::Version
|
171
|
-
version: 0.
|
157
|
+
version: 0.19.0
|
172
158
|
- !ruby/object:Gem::Dependency
|
173
159
|
name: webmock
|
174
160
|
requirement: !ruby/object:Gem::Requirement
|
175
161
|
requirements:
|
176
162
|
- - "~>"
|
177
163
|
- !ruby/object:Gem::Version
|
178
|
-
version: 3.
|
164
|
+
version: 3.8.3
|
179
165
|
type: :development
|
180
166
|
prerelease: false
|
181
167
|
version_requirements: !ruby/object:Gem::Requirement
|
182
168
|
requirements:
|
183
169
|
- - "~>"
|
184
170
|
- !ruby/object:Gem::Version
|
185
|
-
version: 3.
|
186
|
-
description: A lightweight
|
171
|
+
version: 3.8.3
|
172
|
+
description: A lightweight Ruby client for the Salesforce REST API
|
187
173
|
email:
|
174
|
+
- me@timrogers.co.uk
|
188
175
|
- eric@ejholmes.net
|
189
|
-
- tim@gocardless.com
|
190
176
|
executables: []
|
191
177
|
extensions: []
|
192
178
|
extra_rdoc_files: []
|
193
179
|
files:
|
194
180
|
- ".circleci/config.yml"
|
181
|
+
- ".github/ISSUE_TEMPLATE/unhandled-salesforce-error.md"
|
195
182
|
- ".gitignore"
|
196
183
|
- ".rubocop.yml"
|
197
184
|
- ".rubocop_todo.yml"
|
198
185
|
- CHANGELOG.md
|
199
186
|
- CODE_OF_CONDUCT.md
|
200
187
|
- CONTRIBUTING.md
|
188
|
+
- Dockerfile
|
201
189
|
- Gemfile
|
202
190
|
- Guardfile
|
203
191
|
- LICENSE
|
204
192
|
- README.md
|
205
193
|
- Rakefile
|
194
|
+
- UPGRADING.md
|
195
|
+
- docker-compose.yml
|
206
196
|
- lib/restforce.rb
|
207
197
|
- lib/restforce/abstract_client.rb
|
208
198
|
- lib/restforce/attachment.rb
|
@@ -221,6 +211,8 @@ files:
|
|
221
211
|
- lib/restforce/config.rb
|
222
212
|
- lib/restforce/data/client.rb
|
223
213
|
- lib/restforce/document.rb
|
214
|
+
- lib/restforce/error_code.rb
|
215
|
+
- lib/restforce/file_part.rb
|
224
216
|
- lib/restforce/mash.rb
|
225
217
|
- lib/restforce/middleware.rb
|
226
218
|
- lib/restforce/middleware/authentication.rb
|
@@ -240,7 +232,6 @@ files:
|
|
240
232
|
- lib/restforce/signed_request.rb
|
241
233
|
- lib/restforce/sobject.rb
|
242
234
|
- lib/restforce/tooling/client.rb
|
243
|
-
- lib/restforce/upload_io.rb
|
244
235
|
- lib/restforce/version.rb
|
245
236
|
- restforce.gemspec
|
246
237
|
- script/bootstrap
|
@@ -306,6 +297,7 @@ files:
|
|
306
297
|
- spec/unit/config_spec.rb
|
307
298
|
- spec/unit/data/client_spec.rb
|
308
299
|
- spec/unit/document_spec.rb
|
300
|
+
- spec/unit/error_code_spec.rb
|
309
301
|
- spec/unit/mash_spec.rb
|
310
302
|
- spec/unit/middleware/authentication/jwt_bearer_spec.rb
|
311
303
|
- spec/unit/middleware/authentication/password_spec.rb
|
@@ -321,7 +313,7 @@ files:
|
|
321
313
|
- spec/unit/signed_request_spec.rb
|
322
314
|
- spec/unit/sobject_spec.rb
|
323
315
|
- spec/unit/tooling/client_spec.rb
|
324
|
-
homepage:
|
316
|
+
homepage: https://restforce.github.io/
|
325
317
|
licenses:
|
326
318
|
- MIT
|
327
319
|
metadata:
|
@@ -335,17 +327,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
335
327
|
requirements:
|
336
328
|
- - ">="
|
337
329
|
- !ruby/object:Gem::Version
|
338
|
-
version: '2.
|
330
|
+
version: '2.5'
|
339
331
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
340
332
|
requirements:
|
341
333
|
- - ">="
|
342
334
|
- !ruby/object:Gem::Version
|
343
335
|
version: '0'
|
344
336
|
requirements: []
|
345
|
-
rubygems_version: 3.
|
337
|
+
rubygems_version: 3.1.2
|
346
338
|
signing_key:
|
347
339
|
specification_version: 4
|
348
|
-
summary: A lightweight
|
340
|
+
summary: A lightweight Ruby client for the Salesforce REST API
|
349
341
|
test_files:
|
350
342
|
- spec/fixtures/auth_error_response.json
|
351
343
|
- spec/fixtures/auth_success_response.json
|
@@ -406,6 +398,7 @@ test_files:
|
|
406
398
|
- spec/unit/config_spec.rb
|
407
399
|
- spec/unit/data/client_spec.rb
|
408
400
|
- spec/unit/document_spec.rb
|
401
|
+
- spec/unit/error_code_spec.rb
|
409
402
|
- spec/unit/mash_spec.rb
|
410
403
|
- spec/unit/middleware/authentication/jwt_bearer_spec.rb
|
411
404
|
- spec/unit/middleware/authentication/password_spec.rb
|