restforce 4.2.2 → 5.1.1

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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +9 -9
  3. data/.github/ISSUE_TEMPLATE/unhandled-salesforce-error.md +17 -0
  4. data/.github/dependabot.yml +19 -0
  5. data/.rubocop.yml +5 -4
  6. data/CHANGELOG.md +68 -0
  7. data/CONTRIBUTING.md +21 -1
  8. data/Dockerfile +31 -0
  9. data/Gemfile +10 -7
  10. data/README.md +46 -21
  11. data/UPGRADING.md +38 -0
  12. data/docker-compose.yml +7 -0
  13. data/lib/restforce/collection.rb +7 -2
  14. data/lib/restforce/concerns/api.rb +2 -2
  15. data/lib/restforce/concerns/base.rb +2 -2
  16. data/lib/restforce/concerns/caching.rb +7 -0
  17. data/lib/restforce/concerns/picklists.rb +2 -2
  18. data/lib/restforce/concerns/streaming.rb +1 -3
  19. data/lib/restforce/config.rb +4 -1
  20. data/lib/restforce/error_code.rb +638 -0
  21. data/lib/restforce/file_part.rb +24 -0
  22. data/lib/restforce/mash.rb +7 -2
  23. data/lib/restforce/middleware/caching.rb +1 -1
  24. data/lib/restforce/middleware/logger.rb +8 -7
  25. data/lib/restforce/middleware/raise_error.rb +3 -4
  26. data/lib/restforce/middleware.rb +2 -0
  27. data/lib/restforce/version.rb +1 -1
  28. data/lib/restforce.rb +4 -7
  29. data/restforce.gemspec +9 -19
  30. data/spec/integration/abstract_client_spec.rb +41 -32
  31. data/spec/integration/data/client_spec.rb +6 -2
  32. data/spec/spec_helper.rb +24 -1
  33. data/spec/support/client_integration.rb +7 -7
  34. data/spec/support/concerns.rb +1 -1
  35. data/spec/support/fixture_helpers.rb +1 -3
  36. data/spec/support/middleware.rb +1 -2
  37. data/spec/unit/collection_spec.rb +20 -2
  38. data/spec/unit/concerns/api_spec.rb +11 -11
  39. data/spec/unit/concerns/authentication_spec.rb +6 -6
  40. data/spec/unit/concerns/caching_spec.rb +26 -0
  41. data/spec/unit/concerns/connection_spec.rb +2 -2
  42. data/spec/unit/concerns/streaming_spec.rb +3 -3
  43. data/spec/unit/config_spec.rb +1 -1
  44. data/spec/unit/error_code_spec.rb +61 -0
  45. data/spec/unit/middleware/authentication/jwt_bearer_spec.rb +4 -4
  46. data/spec/unit/middleware/authentication/password_spec.rb +2 -2
  47. data/spec/unit/middleware/authentication/token_spec.rb +2 -2
  48. data/spec/unit/middleware/authentication_spec.rb +11 -5
  49. data/spec/unit/middleware/gzip_spec.rb +2 -2
  50. data/spec/unit/middleware/raise_error_spec.rb +29 -10
  51. data/spec/unit/signed_request_spec.rb +1 -1
  52. metadata +33 -123
  53. data/lib/restforce/upload_io.rb +0 -9
@@ -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 last before the Faraday Adapter" do
76
+ it "must always be used as the last handler" do
77
77
  client.middleware.handlers.reverse.index(Restforce::Middleware::Logger).
78
- should eq 1
78
+ should eq 0
79
79
  end
80
80
  end
81
81
  end
@@ -13,10 +13,10 @@ describe Restforce::Concerns::Streaming, event_machine: true do
13
13
  it 'subscribes to the topics with faye' do
14
14
  faye_double.
15
15
  should_receive(:subscribe).
16
- with(channels, &subscribe_block)
16
+ with(channels)
17
17
  client.stub faye: faye_double
18
18
 
19
- client.subscription(channels, &subscribe_block)
19
+ client.subscription(channels)
20
20
  end
21
21
 
22
22
  context "replay_handlers" do
@@ -110,7 +110,7 @@ describe Restforce::Concerns::Streaming, event_machine: true do
110
110
  end
111
111
  end
112
112
 
113
- describe Restforce::Concerns::Streaming::ReplayExtension do
113
+ describe "ReplayExtension" do
114
114
  let(:handlers) { {} }
115
115
  let(:extension) { Restforce::Concerns::Streaming::ReplayExtension.new(handlers) }
116
116
 
@@ -76,7 +76,7 @@ describe Restforce do
76
76
  subject { Restforce.log? }
77
77
 
78
78
  context 'by default' do
79
- it { should be_false }
79
+ it { should be false }
80
80
  end
81
81
  end
82
82
 
@@ -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
@@ -17,14 +17,14 @@ describe Restforce::Middleware::Authentication::JWTBearer do
17
17
  let(:success_request) do
18
18
  stub_login_request(
19
19
  body: "grant_type=grant_type—urn:ietf:params:oauth:grant-type:jwt-bearer&" \
20
- "assertion=abc1234567890"
20
+ "assertion=abc1234567890"
21
21
  ).to_return(status: 200, body: fixture(:auth_success_response))
22
22
  end
23
23
 
24
24
  let(:fail_request) do
25
25
  stub_login_request(
26
26
  body: "grant_type=grant_type—urn:ietf:params:oauth:grant-type:jwt-bearer&" \
27
- "assertion=abc1234567890"
27
+ "assertion=abc1234567890"
28
28
  ).to_return(status: 400, body: fixture(:refresh_error_response))
29
29
  end
30
30
  end
@@ -47,14 +47,14 @@ describe Restforce::Middleware::Authentication::JWTBearer do
47
47
  let(:success_request) do
48
48
  stub_login_request(
49
49
  body: "grant_type=grant_type—urn:ietf:params:oauth:grant-type:jwt-bearer&" \
50
- "assertion=abc1234567890"
50
+ "assertion=abc1234567890"
51
51
  ).to_return(status: 200, body: fixture(:auth_success_response))
52
52
  end
53
53
 
54
54
  let(:fail_request) do
55
55
  stub_login_request(
56
56
  body: "grant_type=grant_type—urn:ietf:params:oauth:grant-type:jwt-bearer&" \
57
- "assertion=abc1234567890"
57
+ "assertion=abc1234567890"
58
58
  ).to_return(status: 400, body: fixture(:refresh_error_response))
59
59
  end
60
60
  end
@@ -17,14 +17,14 @@ describe Restforce::Middleware::Authentication::Password do
17
17
  let(:success_request) do
18
18
  stub_login_request(
19
19
  body: "grant_type=password&client_id=client_id&client_secret=client_secret" \
20
- "&username=foo&password=barsecurity_token"
20
+ "&username=foo&password=barsecurity_token"
21
21
  ).to_return(status: 200, body: fixture(:auth_success_response))
22
22
  end
23
23
 
24
24
  let(:fail_request) do
25
25
  stub_login_request(
26
26
  body: "grant_type=password&client_id=client_id&client_secret=client_secret" \
27
- "&username=foo&password=barsecurity_token"
27
+ "&username=foo&password=barsecurity_token"
28
28
  ).to_return(status: 400, body: fixture(:auth_error_response))
29
29
  end
30
30
  end
@@ -15,14 +15,14 @@ describe Restforce::Middleware::Authentication::Token do
15
15
  let(:success_request) do
16
16
  stub_login_request(
17
17
  body: "grant_type=refresh_token&refresh_token=refresh_token&" \
18
- "client_id=client_id&client_secret=client_secret"
18
+ "client_id=client_id&client_secret=client_secret"
19
19
  ).to_return(status: 200, body: fixture(:auth_success_response))
20
20
  end
21
21
 
22
22
  let(:fail_request) do
23
23
  stub_login_request(
24
24
  body: "grant_type=refresh_token&refresh_token=refresh_token&" \
25
- "client_id=client_id&client_secret=client_secret"
25
+ "client_id=client_id&client_secret=client_secret"
26
26
  ).to_return(status: 400, body: fixture(:refresh_error_response))
27
27
  end
28
28
  end
@@ -8,7 +8,9 @@ describe Restforce::Middleware::Authentication do
8
8
  proxy_uri: 'https://not-a-real-site.com',
9
9
  authentication_retries: retries,
10
10
  adapter: :net_http,
11
+ # rubocop:disable Naming/VariableNumber
11
12
  ssl: { version: :TLSv1_2 } }
13
+ # rubocop:enable Naming/VariableNumber
12
14
  end
13
15
 
14
16
  describe '.authenticate!' do
@@ -57,10 +59,10 @@ describe Restforce::Middleware::Authentication do
57
59
  end
58
60
 
59
61
  its(:handlers) {
60
- should include FaradayMiddleware::ParseJson,
61
- Faraday::Adapter::NetHttp
62
+ should include FaradayMiddleware::ParseJson
62
63
  }
63
64
  its(:handlers) { should_not include Restforce::Middleware::Logger }
65
+ its(:adapter) { should eq Faraday::Adapter::NetHttp }
64
66
  end
65
67
 
66
68
  context 'with logging enabled' do
@@ -70,8 +72,9 @@ describe Restforce::Middleware::Authentication do
70
72
 
71
73
  its(:handlers) {
72
74
  should include FaradayMiddleware::ParseJson,
73
- Restforce::Middleware::Logger, Faraday::Adapter::NetHttp
75
+ Restforce::Middleware::Logger
74
76
  }
77
+ its(:adapter) { should eq Faraday::Adapter::NetHttp }
75
78
  end
76
79
 
77
80
  context 'with specified adapter' do
@@ -80,13 +83,16 @@ describe Restforce::Middleware::Authentication do
80
83
  end
81
84
 
82
85
  its(:handlers) {
83
- should include FaradayMiddleware::ParseJson, Faraday::Adapter::Typhoeus
86
+ should include FaradayMiddleware::ParseJson
84
87
  }
88
+ its(:adapter) { should eq Faraday::Adapter::Typhoeus }
85
89
  end
86
90
  end
87
91
 
88
92
  it "should have SSL config set" do
93
+ # rubocop:disable Naming/VariableNumber
89
94
  connection.ssl[:version].should eq(:TLSv1_2)
95
+ # rubocop:enable Naming/VariableNumber
90
96
  end
91
97
  end
92
98
 
@@ -94,7 +100,7 @@ describe Restforce::Middleware::Authentication do
94
100
  context 'when response.body is present' do
95
101
  let(:response) {
96
102
  Faraday::Response.new(
97
- body: { 'error' => 'error', 'error_description' => 'description' },
103
+ response_body: { 'error' => 'error', 'error_description' => 'description' },
98
104
  status: 401
99
105
  )
100
106
  }
@@ -58,11 +58,11 @@ describe Restforce::Middleware::Gzip do
58
58
  env[:response_headers]['Content-Encoding'] = 'gzip'
59
59
  end
60
60
 
61
- it { should be_true }
61
+ it { should be true }
62
62
  end
63
63
 
64
64
  context 'when not gzipped' do
65
- it { should be_false }
65
+ it { should be false }
66
66
  end
67
67
  end
68
68
  end
@@ -14,8 +14,10 @@ describe Restforce::Middleware::RaiseError do
14
14
  let(:status) { 404 }
15
15
 
16
16
  it 'raises Restforce::NotFoundError' do
17
- expect { on_complete }.to raise_error Restforce::NotFoundError,
18
- 'INVALID_FIELD: error_message'
17
+ expect { on_complete }.to raise_error do |error|
18
+ expect(error).to be_a Restforce::NotFoundError
19
+ expect(error.message).to start_with("INVALID_FIELD: error_message")
20
+ end
19
21
  end
20
22
 
21
23
  it 'raises an error that inherits from Faraday::ResourceNotFound' do
@@ -40,8 +42,10 @@ describe Restforce::Middleware::RaiseError do
40
42
  let(:status) { 400 }
41
43
 
42
44
  it "raises an error derived from the response's errorCode" do
43
- expect { on_complete }.to raise_error Restforce::ErrorCode::InvalidField,
44
- 'INVALID_FIELD: error_message'
45
+ expect { on_complete }.to raise_error do |error|
46
+ expect(error).to be_a Restforce::ErrorCode::InvalidField
47
+ expect(error.message).to start_with("INVALID_FIELD: error_message")
48
+ end
45
49
  end
46
50
 
47
51
  it 'raises an error that inherits from Faraday::ClientError' do
@@ -53,8 +57,10 @@ describe Restforce::Middleware::RaiseError do
53
57
  let(:status) { 401 }
54
58
 
55
59
  it 'raises Restforce::UnauthorizedError' do
56
- expect { on_complete }.to raise_error Restforce::UnauthorizedError,
57
- 'INVALID_FIELD: error_message'
60
+ expect { on_complete }.to raise_error do |error|
61
+ expect(error).to be_a Restforce::UnauthorizedError
62
+ expect(error.message).to start_with("INVALID_FIELD: error_message")
63
+ end
58
64
  end
59
65
  end
60
66
 
@@ -76,13 +82,26 @@ describe Restforce::Middleware::RaiseError do
76
82
  let(:status) { 400 }
77
83
 
78
84
  it 'raises a generic Restforce::ResponseError' do
79
- expect { on_complete }.to raise_error Restforce::ResponseError,
80
- "(error code missing): #{body}"
85
+ expect { on_complete }.to raise_error do |error|
86
+ expect(error).to be_a Restforce::ResponseError
87
+ expect(error.message).to start_with("(error code missing): An error occured")
88
+ end
81
89
  end
82
90
 
83
91
  it 'raises an error that inherits from Faraday::ClientError' do
84
- expect { on_complete }.to raise_error Faraday::ClientError,
85
- "(error code missing): #{body}"
92
+ expect { on_complete }.to raise_error do |error|
93
+ expect(error).to be_a Faraday::ClientError
94
+ expect(error.message).to start_with("(error code missing): An error occured")
95
+ end
96
+ end
97
+ end
98
+
99
+ context 'when error code is not already defined' do
100
+ let(:body) { { 'errorCode' => 'SOMETHING_UNDEFINED' } }
101
+ let(:status) { 400 }
102
+
103
+ it 'raises a generic Restforce::ResponseError' do
104
+ expect { on_complete }.to raise_error Restforce::ResponseError
86
105
  end
87
106
  end
88
107
  end
@@ -6,7 +6,7 @@ describe Restforce::SignedRequest do
6
6
  let(:client_secret) { 'foo' }
7
7
  let(:digest) do
8
8
  if RUBY_VERSION < '2.1'
9
- OpenSSL::Digest::Digest.new('sha256')
9
+ OpenSSL::Digest.new('Digest', 'sha256')
10
10
  else
11
11
  OpenSSL::Digest.new('sha256')
12
12
  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.2.2
4
+ version: 5.1.1
5
5
  platform: ruby
6
6
  authors:
7
- - Eric J. Holmes
8
7
  - Tim Rogers
9
- autorequire:
8
+ - Eric J. Holmes
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-01-23 00:00:00.000000000 Z
12
+ date: 2021-10-13 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: '1.0'
43
+ version: '2.0'
44
44
  type: :runtime
45
45
  prerelease: false
46
46
  version_requirements: !ruby/object:Gem::Requirement
@@ -50,35 +50,7 @@ dependencies:
50
50
  version: 0.8.8
51
51
  - - "<="
52
52
  - !ruby/object:Gem::Version
53
- version: '1.0'
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
68
- - !ruby/object:Gem::Dependency
69
- name: jwt
70
- requirement: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: 1.5.6
75
- type: :runtime
76
- prerelease: false
77
- version_requirements: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: 1.5.6
53
+ version: '2.0'
82
54
  - !ruby/object:Gem::Dependency
83
55
  name: hashie
84
56
  requirement: !ruby/object:Gem::Requirement
@@ -100,109 +72,44 @@ dependencies:
100
72
  - !ruby/object:Gem::Version
101
73
  version: '5.0'
102
74
  - !ruby/object:Gem::Dependency
103
- name: faye
75
+ name: jwt
104
76
  requirement: !ruby/object:Gem::Requirement
105
77
  requirements:
106
78
  - - ">="
107
79
  - !ruby/object:Gem::Version
108
- version: '0'
109
- type: :development
80
+ version: 1.5.6
81
+ type: :runtime
110
82
  prerelease: false
111
83
  version_requirements: !ruby/object:Gem::Requirement
112
84
  requirements:
113
85
  - - ">="
114
86
  - !ruby/object:Gem::Version
115
- version: '0'
116
- - !ruby/object:Gem::Dependency
117
- name: rspec
118
- requirement: !ruby/object:Gem::Requirement
119
- requirements:
120
- - - "~>"
121
- - !ruby/object:Gem::Version
122
- version: 2.14.0
123
- type: :development
124
- prerelease: false
125
- version_requirements: !ruby/object:Gem::Requirement
126
- requirements:
127
- - - "~>"
128
- - !ruby/object:Gem::Version
129
- version: 2.14.0
130
- - !ruby/object:Gem::Dependency
131
- name: rspec_junit_formatter
132
- requirement: !ruby/object:Gem::Requirement
133
- requirements:
134
- - - "~>"
135
- - !ruby/object:Gem::Version
136
- version: 0.4.1
137
- type: :development
138
- prerelease: false
139
- version_requirements: !ruby/object:Gem::Requirement
140
- requirements:
141
- - - "~>"
142
- - !ruby/object:Gem::Version
143
- version: 0.4.1
144
- - !ruby/object:Gem::Dependency
145
- name: rubocop
146
- requirement: !ruby/object:Gem::Requirement
147
- requirements:
148
- - - "~>"
149
- - !ruby/object:Gem::Version
150
- version: 0.77.0
151
- type: :development
152
- prerelease: false
153
- version_requirements: !ruby/object:Gem::Requirement
154
- requirements:
155
- - - "~>"
156
- - !ruby/object:Gem::Version
157
- version: 0.77.0
158
- - !ruby/object:Gem::Dependency
159
- name: simplecov
160
- requirement: !ruby/object:Gem::Requirement
161
- requirements:
162
- - - "~>"
163
- - !ruby/object:Gem::Version
164
- version: 0.17.1
165
- type: :development
166
- prerelease: false
167
- version_requirements: !ruby/object:Gem::Requirement
168
- requirements:
169
- - - "~>"
170
- - !ruby/object:Gem::Version
171
- version: 0.17.1
172
- - !ruby/object:Gem::Dependency
173
- name: webmock
174
- requirement: !ruby/object:Gem::Requirement
175
- requirements:
176
- - - "~>"
177
- - !ruby/object:Gem::Version
178
- version: 3.7.6
179
- type: :development
180
- prerelease: false
181
- version_requirements: !ruby/object:Gem::Requirement
182
- requirements:
183
- - - "~>"
184
- - !ruby/object:Gem::Version
185
- version: 3.7.6
186
- description: A lightweight ruby client for the Salesforce REST API.
87
+ version: 1.5.6
88
+ description: A lightweight Ruby client for the Salesforce REST API
187
89
  email:
90
+ - me@timrogers.co.uk
188
91
  - eric@ejholmes.net
189
- - tim@gocardless.com
190
92
  executables: []
191
93
  extensions: []
192
94
  extra_rdoc_files: []
193
95
  files:
194
96
  - ".circleci/config.yml"
97
+ - ".github/ISSUE_TEMPLATE/unhandled-salesforce-error.md"
98
+ - ".github/dependabot.yml"
195
99
  - ".gitignore"
196
100
  - ".rubocop.yml"
197
101
  - ".rubocop_todo.yml"
198
102
  - CHANGELOG.md
199
103
  - CODE_OF_CONDUCT.md
200
104
  - CONTRIBUTING.md
105
+ - Dockerfile
201
106
  - Gemfile
202
107
  - Guardfile
203
108
  - LICENSE
204
109
  - README.md
205
110
  - Rakefile
111
+ - UPGRADING.md
112
+ - docker-compose.yml
206
113
  - lib/restforce.rb
207
114
  - lib/restforce/abstract_client.rb
208
115
  - lib/restforce/attachment.rb
@@ -221,6 +128,8 @@ files:
221
128
  - lib/restforce/config.rb
222
129
  - lib/restforce/data/client.rb
223
130
  - lib/restforce/document.rb
131
+ - lib/restforce/error_code.rb
132
+ - lib/restforce/file_part.rb
224
133
  - lib/restforce/mash.rb
225
134
  - lib/restforce/middleware.rb
226
135
  - lib/restforce/middleware/authentication.rb
@@ -240,7 +149,6 @@ files:
240
149
  - lib/restforce/signed_request.rb
241
150
  - lib/restforce/sobject.rb
242
151
  - lib/restforce/tooling/client.rb
243
- - lib/restforce/upload_io.rb
244
152
  - lib/restforce/version.rb
245
153
  - restforce.gemspec
246
154
  - script/bootstrap
@@ -306,6 +214,7 @@ files:
306
214
  - spec/unit/config_spec.rb
307
215
  - spec/unit/data/client_spec.rb
308
216
  - spec/unit/document_spec.rb
217
+ - spec/unit/error_code_spec.rb
309
218
  - spec/unit/mash_spec.rb
310
219
  - spec/unit/middleware/authentication/jwt_bearer_spec.rb
311
220
  - spec/unit/middleware/authentication/password_spec.rb
@@ -321,13 +230,13 @@ files:
321
230
  - spec/unit/signed_request_spec.rb
322
231
  - spec/unit/sobject_spec.rb
323
232
  - spec/unit/tooling/client_spec.rb
324
- homepage: http://restforce.org/
233
+ homepage: https://restforce.github.io/
325
234
  licenses:
326
235
  - MIT
327
236
  metadata:
328
237
  source_code_uri: https://github.com/restforce/restforce
329
238
  changelog_uri: https://github.com/restforce/restforce/blob/master/CHANGELOG.md
330
- post_install_message:
239
+ post_install_message:
331
240
  rdoc_options: []
332
241
  require_paths:
333
242
  - lib
@@ -335,17 +244,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
335
244
  requirements:
336
245
  - - ">="
337
246
  - !ruby/object:Gem::Version
338
- version: '2.4'
247
+ version: '2.6'
339
248
  required_rubygems_version: !ruby/object:Gem::Requirement
340
249
  requirements:
341
250
  - - ">="
342
251
  - !ruby/object:Gem::Version
343
252
  version: '0'
344
253
  requirements: []
345
- rubygems_version: 3.0.3
346
- signing_key:
254
+ rubygems_version: 3.2.22
255
+ signing_key:
347
256
  specification_version: 4
348
- summary: A lightweight ruby client for the Salesforce REST API.
257
+ summary: A lightweight Ruby client for the Salesforce REST API
349
258
  test_files:
350
259
  - spec/fixtures/auth_error_response.json
351
260
  - spec/fixtures/auth_success_response.json
@@ -406,6 +315,7 @@ test_files:
406
315
  - spec/unit/config_spec.rb
407
316
  - spec/unit/data/client_spec.rb
408
317
  - spec/unit/document_spec.rb
318
+ - spec/unit/error_code_spec.rb
409
319
  - spec/unit/mash_spec.rb
410
320
  - spec/unit/middleware/authentication/jwt_bearer_spec.rb
411
321
  - spec/unit/middleware/authentication/password_spec.rb
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'faraday/upload_io'
4
-
5
- module Restforce
6
- UploadIO = Faraday::UploadIO
7
- end
8
-
9
- require 'restforce/patches/parts' unless Parts::Part.method(:new).arity.abs == 4