restforce 1.5.3 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of restforce might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.rubocop.yml +60 -0
- data/.rubocop_todo.yml +117 -0
- data/.travis.yml +3 -5
- data/CHANGELOG.md +6 -0
- data/README.md +2 -0
- data/Rakefile +1 -1
- data/lib/restforce/abstract_client.rb +1 -1
- data/lib/restforce/attachment.rb +1 -3
- data/lib/restforce/concerns/api.rb +22 -17
- data/lib/restforce/concerns/authentication.rb +4 -3
- data/lib/restforce/concerns/base.rb +42 -31
- data/lib/restforce/concerns/caching.rb +1 -3
- data/lib/restforce/concerns/canvas.rb +0 -2
- data/lib/restforce/concerns/connection.rb +18 -12
- data/lib/restforce/concerns/picklists.rb +10 -10
- data/lib/restforce/concerns/streaming.rb +9 -4
- data/lib/restforce/concerns/verbs.rb +0 -2
- data/lib/restforce/config.rb +19 -13
- data/lib/restforce/data/client.rb +8 -1
- data/lib/restforce/mash.rb +6 -10
- data/lib/restforce/middleware.rb +3 -1
- data/lib/restforce/middleware/authentication.rb +21 -7
- data/lib/restforce/middleware/authentication/password.rb +5 -9
- data/lib/restforce/middleware/authentication/token.rb +4 -8
- data/lib/restforce/middleware/authorization.rb +0 -3
- data/lib/restforce/middleware/caching.rb +4 -4
- data/lib/restforce/middleware/instance_url.rb +3 -5
- data/lib/restforce/middleware/logger.rb +7 -7
- data/lib/restforce/middleware/mashify.rb +2 -3
- data/lib/restforce/middleware/multipart.rb +15 -8
- data/lib/restforce/middleware/raise_error.rb +2 -1
- data/lib/restforce/patches/parts.rb +2 -3
- data/lib/restforce/signed_request.rb +2 -2
- data/lib/restforce/sobject.rb +1 -3
- data/lib/restforce/tooling/client.rb +1 -3
- data/lib/restforce/upload_io.rb +1 -3
- data/lib/restforce/version.rb +1 -1
- data/restforce.gemspec +7 -4
- data/spec/integration/abstract_client_spec.rb +123 -75
- data/spec/integration/data/client_spec.rb +24 -12
- data/spec/spec_helper.rb +2 -2
- data/spec/support/client_integration.rb +23 -17
- data/spec/support/concerns.rb +2 -2
- data/spec/support/event_machine.rb +3 -3
- data/spec/support/fixture_helpers.rb +16 -12
- data/spec/support/middleware.rb +16 -8
- data/spec/unit/abstract_client_spec.rb +1 -1
- data/spec/unit/attachment_spec.rb +2 -1
- data/spec/unit/collection_spec.rb +13 -4
- data/spec/unit/concerns/api_spec.rb +15 -13
- data/spec/unit/concerns/authentication_spec.rb +20 -17
- data/spec/unit/concerns/base_spec.rb +2 -2
- data/spec/unit/concerns/caching_spec.rb +2 -2
- data/spec/unit/concerns/canvas_spec.rb +3 -3
- data/spec/unit/concerns/connection_spec.rb +6 -7
- data/spec/unit/concerns/streaming_spec.rb +8 -8
- data/spec/unit/config_spec.rb +6 -6
- data/spec/unit/data/client_spec.rb +1 -1
- data/spec/unit/mash_spec.rb +1 -1
- data/spec/unit/middleware/authentication/password_spec.rb +14 -12
- data/spec/unit/middleware/authentication/token_spec.rb +12 -10
- data/spec/unit/middleware/authentication_spec.rb +15 -11
- data/spec/unit/middleware/authorization_spec.rb +1 -1
- data/spec/unit/middleware/gzip_spec.rb +1 -1
- data/spec/unit/middleware/instance_url_spec.rb +2 -2
- data/spec/unit/middleware/mashify_spec.rb +2 -2
- data/spec/unit/middleware/raise_error_spec.rb +23 -7
- data/spec/unit/sobject_spec.rb +16 -9
- data/spec/unit/tooling/client_spec.rb +1 -1
- metadata +23 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b5ecae4e8e7e8b52ae216ad1b0505000eebb2a4f
|
4
|
+
data.tar.gz: 27125a8223a2bf25ec80cc0dff6020021a8f0505
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c829bf4711eadbadcb26b5db972a4ecc71d08181e124e64dfaf3663713f0e74d1490eee4617d71d3c29827e2c943319eb2ab5a0b0c26ed4f314ebfcc5cec748f
|
7
|
+
data.tar.gz: 90292fda7e4053b90f6de1a4d73ac1df40fa9f4867765fb6082e326de314e27577c1079920f1a04d547dbf1b4f4c9562e695210b842ed3ad294ef8aef131dd2f
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
# For all options see https://github.com/bbatsov/rubocop/tree/master/config
|
2
|
+
|
3
|
+
inherit_from: .rubocop_todo.yml
|
4
|
+
|
5
|
+
AllCops:
|
6
|
+
RunRailsCops: false
|
7
|
+
Include:
|
8
|
+
- Rakefile
|
9
|
+
Exclude:
|
10
|
+
- .*/**/*
|
11
|
+
|
12
|
+
# Limit lines to 80 characters.
|
13
|
+
LineLength:
|
14
|
+
Max: 90
|
15
|
+
|
16
|
+
ClassLength:
|
17
|
+
Enabled: false
|
18
|
+
|
19
|
+
ModuleLength:
|
20
|
+
Enabled: false
|
21
|
+
|
22
|
+
# Avoid methods longer than 30 lines of code
|
23
|
+
MethodLength:
|
24
|
+
CountComments: false # count full line comments?
|
25
|
+
Max: 87
|
26
|
+
|
27
|
+
# Avoid single-line methods.
|
28
|
+
SingleLineMethods:
|
29
|
+
AllowIfMethodIsEmpty: true
|
30
|
+
|
31
|
+
StringLiterals:
|
32
|
+
Enabled: false
|
33
|
+
|
34
|
+
GlobalVars:
|
35
|
+
Enabled: false # We use them Redis + StatsD (though maybe we shouldn't?)
|
36
|
+
|
37
|
+
# Wants underscores in all large numbers. Pain in the ass for things like
|
38
|
+
# unix timestamps.
|
39
|
+
NumericLiterals:
|
40
|
+
Enabled: false
|
41
|
+
|
42
|
+
# Wants you to use the same argument names for every reduce. This seems kinda
|
43
|
+
# naff compared to naming them semantically
|
44
|
+
SingleLineBlockParams:
|
45
|
+
Enabled: false
|
46
|
+
|
47
|
+
Style/SignalException:
|
48
|
+
EnforcedStyle: 'only_raise'
|
49
|
+
|
50
|
+
# Use trailing rather than leading dots on multi-line call chains
|
51
|
+
Style/DotPosition:
|
52
|
+
EnforcedStyle: trailing
|
53
|
+
|
54
|
+
# Allow non-ASCII characters (e.g. £) in comments
|
55
|
+
Style/AsciiComments:
|
56
|
+
Enabled: false
|
57
|
+
|
58
|
+
# Allow method names beginning with capital letters to match Salesforce conventions
|
59
|
+
Style/MethodName:
|
60
|
+
Enabled: false
|
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
# This configuration was generated by `rubocop --auto-gen-config`
|
2
|
+
# on 2015-06-06 22:47:07 +0100 using RuboCop version 0.32.0.
|
3
|
+
# The point is for the user to remove these configuration records
|
4
|
+
# one by one as the offenses are removed from the code base.
|
5
|
+
# Note that changes in the inspected code, or installation of new
|
6
|
+
# versions of RuboCop, may require this file to be generated again.
|
7
|
+
|
8
|
+
# Offense count: 50
|
9
|
+
# Cop supports --auto-correct.
|
10
|
+
Lint/UnusedBlockArgument:
|
11
|
+
Enabled: false
|
12
|
+
|
13
|
+
# Offense count: 187
|
14
|
+
Metrics/AbcSize:
|
15
|
+
Max: 61
|
16
|
+
|
17
|
+
# Offense count: 26
|
18
|
+
Metrics/CyclomaticComplexity:
|
19
|
+
Max: 10
|
20
|
+
|
21
|
+
# Offense count: 11
|
22
|
+
Metrics/PerceivedComplexity:
|
23
|
+
Max: 10
|
24
|
+
|
25
|
+
# Offense count: 12
|
26
|
+
Style/AccessorMethodName:
|
27
|
+
Enabled: false
|
28
|
+
|
29
|
+
# Offense count: 164
|
30
|
+
# Cop supports --auto-correct.
|
31
|
+
# Configuration parameters: EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle, SupportedLastArgumentHashStyles.
|
32
|
+
Style/AlignHash:
|
33
|
+
Enabled: false
|
34
|
+
|
35
|
+
# Offense count: 3
|
36
|
+
# Cop supports --auto-correct.
|
37
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles, ProceduralMethods, FunctionalMethods, IgnoredMethods.
|
38
|
+
Style/BlockDelimiters:
|
39
|
+
Enabled: false
|
40
|
+
|
41
|
+
# Offense count: 128
|
42
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
43
|
+
Style/ClassAndModuleChildren:
|
44
|
+
Enabled: false
|
45
|
+
|
46
|
+
# Offense count: 21
|
47
|
+
# Cop supports --auto-correct.
|
48
|
+
Style/ClosingParenthesisIndentation:
|
49
|
+
Enabled: false
|
50
|
+
|
51
|
+
# Offense count: 13
|
52
|
+
# Cop supports --auto-correct.
|
53
|
+
# Configuration parameters: Keywords.
|
54
|
+
Style/CommentAnnotation:
|
55
|
+
Enabled: false
|
56
|
+
|
57
|
+
# Offense count: 743
|
58
|
+
Style/Documentation:
|
59
|
+
Enabled: false
|
60
|
+
|
61
|
+
# Offense count: 9
|
62
|
+
Style/DoubleNegation:
|
63
|
+
Enabled: false
|
64
|
+
|
65
|
+
# Offense count: 109
|
66
|
+
# Configuration parameters: MinBodyLength.
|
67
|
+
Style/GuardClause:
|
68
|
+
Enabled: false
|
69
|
+
|
70
|
+
# Offense count: 48
|
71
|
+
# Cop supports --auto-correct.
|
72
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
73
|
+
Style/IndentHash:
|
74
|
+
Enabled: false
|
75
|
+
|
76
|
+
# Offense count: 70
|
77
|
+
# Cop supports --auto-correct.
|
78
|
+
Style/Lambda:
|
79
|
+
Enabled: false
|
80
|
+
|
81
|
+
# Offense count: 577
|
82
|
+
# Cop supports --auto-correct.
|
83
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
84
|
+
Style/MultilineOperationIndentation:
|
85
|
+
Enabled: false
|
86
|
+
|
87
|
+
# Offense count: 21
|
88
|
+
# Configuration parameters: NamePrefix, NamePrefixBlacklist.
|
89
|
+
Style/PredicateName:
|
90
|
+
Enabled: false
|
91
|
+
|
92
|
+
# Offense count: 4
|
93
|
+
# Cop supports --auto-correct.
|
94
|
+
Style/Proc:
|
95
|
+
Enabled: false
|
96
|
+
|
97
|
+
# Offense count: 173
|
98
|
+
# Cop supports --auto-correct.
|
99
|
+
Style/RedundantSelf:
|
100
|
+
Enabled: false
|
101
|
+
|
102
|
+
# Offense count: 28
|
103
|
+
# Cop supports --auto-correct.
|
104
|
+
Style/SingleSpaceBeforeFirstArg:
|
105
|
+
Enabled: false
|
106
|
+
|
107
|
+
# Offense count: 3
|
108
|
+
# Cop supports --auto-correct.
|
109
|
+
# Configuration parameters: MultiSpaceAllowedForOperators.
|
110
|
+
Style/SpaceAroundOperators:
|
111
|
+
Enabled: false
|
112
|
+
|
113
|
+
# Offense count: 5
|
114
|
+
# Cop supports --auto-correct.
|
115
|
+
# Configuration parameters: ExactNameMatch, AllowPredicates, AllowDSLWriters, IgnoreClassMethods, Whitelist.
|
116
|
+
Style/TrivialAccessors:
|
117
|
+
Enabled: false
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## 2.0.0 (Jun 27, 2015)
|
2
|
+
|
3
|
+
* Drop support for versions of Ruby earlier than 1.9.3, which were [end-of-lifed](https://www.ruby-lang.org/en/news/2014/07/01/eol-for-1-8-7-and-1-9-2/) long ago
|
4
|
+
* Take advantages of Ruby 1.9.3 syntax, and drop old Ruby 1.8 shims
|
5
|
+
* Enforce code style with [Rubocop](https://github.com/bbatsov/rubocop)
|
6
|
+
|
1
7
|
## 1.5.3 (Jun 26, 2015)
|
2
8
|
|
3
9
|
* Fixed a bug with `update!` and `upsert!` mutating provided attributes (@timrogers)
|
data/README.md
CHANGED
@@ -35,6 +35,8 @@ Or install it yourself as:
|
|
35
35
|
|
36
36
|
$ gem install restforce
|
37
37
|
|
38
|
+
__As of [version 2.0.0](https://github.com/ejholmes/restforce/blob/master/CHANGELOG.md#200-jun-27-2015), this gem is only compatible with Ruby 1.9.3 and later.__ To use Ruby 1.9.2 and below, you'll need to manually specify that you wish to use version 1.5.3.
|
39
|
+
|
38
40
|
## Usage
|
39
41
|
|
40
42
|
Restforce is designed with flexibility and ease of use in mind. By default, all API calls will
|
data/Rakefile
CHANGED
data/lib/restforce/attachment.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
module Restforce
|
2
2
|
class Attachment < Restforce::SObject
|
3
|
-
|
4
3
|
# Public: Returns the body of the attachment.
|
5
4
|
#
|
6
5
|
# Examples
|
@@ -12,12 +11,11 @@ module Restforce
|
|
12
11
|
@client.get(super).body
|
13
12
|
end
|
14
13
|
|
15
|
-
|
14
|
+
private
|
16
15
|
|
17
16
|
def ensure_body
|
18
17
|
return true if self.Body?
|
19
18
|
raise 'You need to query the Body for the record first.'
|
20
19
|
end
|
21
|
-
|
22
20
|
end
|
23
21
|
end
|
@@ -72,7 +72,7 @@ module Restforce
|
|
72
72
|
# Returns the Hash representation of the describe call.
|
73
73
|
def describe(sobject = nil)
|
74
74
|
if sobject
|
75
|
-
api_get("sobjects/#{sobject
|
75
|
+
api_get("sobjects/#{sobject}/describe").body
|
76
76
|
else
|
77
77
|
api_get('sobjects').body['sobjects']
|
78
78
|
end
|
@@ -96,9 +96,9 @@ module Restforce
|
|
96
96
|
# Returns the Hash representation of the describe_layouts result
|
97
97
|
def describe_layouts(sobject, layout_id = nil)
|
98
98
|
if layout_id
|
99
|
-
api_get("sobjects/#{sobject
|
99
|
+
api_get("sobjects/#{sobject}/describe/layouts/#{layout_id}").body
|
100
100
|
else
|
101
|
-
api_get("sobjects/#{sobject
|
101
|
+
api_get("sobjects/#{sobject}/describe/layouts").body
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
@@ -125,9 +125,10 @@ module Restforce
|
|
125
125
|
# # => ['Foo Bar Inc.', 'Whizbang Corp']
|
126
126
|
#
|
127
127
|
# Returns a Restforce::Collection if Restforce.configuration.mashify is true.
|
128
|
-
# Returns an Array of Hash for each record in the result if
|
128
|
+
# Returns an Array of Hash for each record in the result if
|
129
|
+
# Restforce.configuration.mashify is false.
|
129
130
|
def query(soql)
|
130
|
-
response = api_get 'query', :
|
131
|
+
response = api_get 'query', q: soql
|
131
132
|
mashify? ? response.body : response.body['records']
|
132
133
|
end
|
133
134
|
|
@@ -146,9 +147,10 @@ module Restforce
|
|
146
147
|
# # => ['GenePoint']
|
147
148
|
#
|
148
149
|
# Returns a Restforce::Collection if Restforce.configuration.mashify is true.
|
149
|
-
# Returns an Array of Hash for each record in the result if
|
150
|
+
# Returns an Array of Hash for each record in the result if
|
151
|
+
# Restforce.configuration.mashify is false.
|
150
152
|
def search(sosl)
|
151
|
-
api_get('search', :
|
153
|
+
api_get('search', q: sosl).body
|
152
154
|
end
|
153
155
|
|
154
156
|
# Public: Insert a new record.
|
@@ -262,9 +264,13 @@ module Restforce
|
|
262
264
|
# Returns the Id of the newly created record if the record was created.
|
263
265
|
# Raises an exception if an error is returned from Salesforce.
|
264
266
|
def upsert!(sobject, field, attrs)
|
265
|
-
external_id = attrs.
|
266
|
-
|
267
|
-
|
267
|
+
external_id = attrs.
|
268
|
+
fetch(attrs.keys.find { |k, v| k.to_s.downcase == field.to_s.downcase }, nil)
|
269
|
+
attrs_without_field = attrs.
|
270
|
+
reject { |k, v| k.to_s.downcase == field.to_s.downcase }
|
271
|
+
response = api_patch "sobjects/#{sobject}/#{field}/#{external_id}",
|
272
|
+
attrs_without_field
|
273
|
+
|
268
274
|
(response.body && response.body['id']) ? response.body['id'] : true
|
269
275
|
end
|
270
276
|
|
@@ -311,8 +317,9 @@ module Restforce
|
|
311
317
|
# field - External ID field to use (default: nil).
|
312
318
|
#
|
313
319
|
# Returns the Restforce::SObject sobject record.
|
314
|
-
def find(sobject, id, field=nil)
|
315
|
-
|
320
|
+
def find(sobject, id, field = nil)
|
321
|
+
url = field ? "sobjects/#{sobject}/#{field}/#{id}" : "sobjects/#{sobject}/#{id}"
|
322
|
+
api_get(url).body
|
316
323
|
end
|
317
324
|
|
318
325
|
# Public: Finds a single record and returns select fields.
|
@@ -324,15 +331,14 @@ module Restforce
|
|
324
331
|
# is passed, all fields are selected.
|
325
332
|
# field - External ID field to use (default: nil).
|
326
333
|
#
|
327
|
-
def select(sobject, id, select, field=nil)
|
334
|
+
def select(sobject, id, select, field = nil)
|
328
335
|
path = field ? "sobjects/#{sobject}/#{field}/#{id}" : "sobjects/#{sobject}/#{id}"
|
329
|
-
path << "?fields=#{select.join(
|
336
|
+
path << "?fields=#{select.join(',')}" if select && select.any?
|
330
337
|
|
331
338
|
api_get(path).body
|
332
339
|
end
|
333
340
|
|
334
|
-
|
335
|
-
private
|
341
|
+
private
|
336
342
|
|
337
343
|
# Internal: Returns a path to an api endpoint
|
338
344
|
#
|
@@ -348,7 +354,6 @@ module Restforce
|
|
348
354
|
def exceptions
|
349
355
|
[Faraday::Error::ClientError]
|
350
356
|
end
|
351
|
-
|
352
357
|
end
|
353
358
|
end
|
354
359
|
end
|
@@ -1,10 +1,12 @@
|
|
1
1
|
module Restforce
|
2
2
|
module Concerns
|
3
3
|
module Authentication
|
4
|
-
|
5
4
|
# Public: Force an authentication
|
6
5
|
def authenticate!
|
7
|
-
|
6
|
+
unless authentication_middleware
|
7
|
+
raise AuthenticationError, 'No authentication middleware present'
|
8
|
+
end
|
9
|
+
|
8
10
|
middleware = authentication_middleware.new nil, self, options
|
9
11
|
middleware.authenticate!
|
10
12
|
end
|
@@ -34,7 +36,6 @@ module Restforce
|
|
34
36
|
options[:client_id] &&
|
35
37
|
options[:client_secret]
|
36
38
|
end
|
37
|
-
|
38
39
|
end
|
39
40
|
end
|
40
41
|
end
|
@@ -1,50 +1,62 @@
|
|
1
1
|
module Restforce
|
2
2
|
module Concerns
|
3
3
|
module Base
|
4
|
-
|
5
4
|
attr_reader :options
|
6
5
|
|
7
6
|
# Public: Creates a new client instance
|
8
7
|
#
|
9
8
|
# opts - A hash of options to be passed in (default: {}).
|
10
|
-
# :username
|
11
|
-
#
|
12
|
-
# :
|
9
|
+
# :username - The String username to use (required for
|
10
|
+
# password authentication).
|
11
|
+
# :password - The String password to use (required for
|
12
|
+
# password authentication).
|
13
|
+
# :security_token - The String security token to use (required for
|
14
|
+
# password authentication).
|
13
15
|
#
|
14
|
-
# :oauth_token
|
15
|
-
#
|
16
|
-
#
|
17
|
-
# :refresh_token
|
18
|
-
#
|
19
|
-
#
|
20
|
-
# :instance_url
|
21
|
-
#
|
16
|
+
# :oauth_token - The String oauth access token to authenticate
|
17
|
+
# API calls (required unless password
|
18
|
+
# authentication is used).
|
19
|
+
# :refresh_token - The String refresh token to obtain fresh
|
20
|
+
# OAuth access tokens (required if oauth
|
21
|
+
# authentication is used).
|
22
|
+
# :instance_url - The String base url for all api requests
|
23
|
+
# (required if oauth authentication is used).
|
22
24
|
#
|
23
|
-
# :client_id
|
24
|
-
#
|
25
|
-
# :client_secret
|
25
|
+
# :client_id - The oauth client id to use. Needed for both
|
26
|
+
# password and oauth authentication
|
27
|
+
# :client_secret - The oauth client secret to use.
|
26
28
|
#
|
27
|
-
# :host
|
28
|
-
#
|
29
|
+
# :host - The String hostname to use during
|
30
|
+
# authentication requests
|
31
|
+
# (default: 'login.salesforce.com').
|
29
32
|
#
|
30
|
-
# :api_version
|
33
|
+
# :api_version - The String REST api version to use
|
34
|
+
# (default: '24.0')
|
31
35
|
#
|
32
|
-
# :authentication_retries
|
33
|
-
#
|
34
|
-
#
|
36
|
+
# :authentication_retries - The number of times that client
|
37
|
+
# should attempt to reauthenticate
|
38
|
+
# before raising an exception (default: 3).
|
35
39
|
#
|
36
|
-
# :compress
|
37
|
-
#
|
38
|
-
#
|
39
|
-
#
|
40
|
+
# :compress - Set to true to have Salesforce compress the
|
41
|
+
# response (default: false).
|
42
|
+
# :mashify - Set to false to skip the conversion of
|
43
|
+
# Salesforce responses to Restforce::Sobjects and
|
44
|
+
# Restforce::Collections. (default: nil).
|
45
|
+
# :timeout - Faraday connection request read/open timeout.
|
46
|
+
# (default: nil).
|
40
47
|
#
|
41
|
-
# :proxy_uri
|
48
|
+
# :proxy_uri - Proxy URI: 'http://proxy.example.com:port' or
|
49
|
+
# 'http://user@pass:proxy.example.com:port'
|
42
50
|
#
|
43
|
-
# :authentication_callback
|
44
|
-
#
|
51
|
+
# :authentication_callback - A Proc that is called with the response body
|
52
|
+
# after a successful authentication.
|
45
53
|
def initialize(opts = {})
|
46
54
|
raise ArgumentError, 'Please specify a hash of options' unless opts.is_a?(Hash)
|
47
|
-
|
55
|
+
|
56
|
+
@options = Hash[Restforce.configuration.options.map do |option|
|
57
|
+
[option, Restforce.configuration.send(option)]
|
58
|
+
end]
|
59
|
+
|
48
60
|
@options.merge! opts
|
49
61
|
yield builder if block_given?
|
50
62
|
end
|
@@ -57,7 +69,6 @@ module Restforce
|
|
57
69
|
def inspect
|
58
70
|
"#<#{self.class} @options=#{@options.inspect}>"
|
59
71
|
end
|
60
|
-
|
61
72
|
end
|
62
73
|
end
|
63
|
-
end
|
74
|
+
end
|