smartsheet 2.77.0 → 2.77.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +12 -12
- data/.rubocop.yml +4 -4
- data/.travis.yml +26 -15
- data/.yardopts +3 -3
- data/ADVANCED.md +78 -78
- data/CHANGELOG.md +115 -112
- data/Gemfile +6 -6
- data/LICENSE +202 -202
- data/README.md +246 -246
- data/Rakefile +29 -29
- data/bin/console +14 -14
- data/bin/setup +8 -8
- data/lib/smartsheet.rb +2 -2
- data/lib/smartsheet/api/body_builder.rb +25 -25
- data/lib/smartsheet/api/endpoint_spec.rb +54 -54
- data/lib/smartsheet/api/faraday_adapter/faraday_net_client.rb +45 -45
- data/lib/smartsheet/api/faraday_adapter/faraday_response.rb +70 -70
- data/lib/smartsheet/api/faraday_adapter/middleware/faraday_error_translator.rb +20 -20
- data/lib/smartsheet/api/faraday_adapter/middleware/response_parser.rb +25 -25
- data/lib/smartsheet/api/file_spec.rb +55 -55
- data/lib/smartsheet/api/header_builder.rb +96 -96
- data/lib/smartsheet/api/request.rb +42 -42
- data/lib/smartsheet/api/request_client.rb +43 -43
- data/lib/smartsheet/api/request_logger.rb +182 -182
- data/lib/smartsheet/api/request_spec.rb +57 -57
- data/lib/smartsheet/api/response_net_client_decorator.rb +54 -54
- data/lib/smartsheet/api/retry_logic.rb +40 -40
- data/lib/smartsheet/api/retry_net_client_decorator.rb +37 -37
- data/lib/smartsheet/api/url_builder.rb +25 -25
- data/lib/smartsheet/client.rb +193 -193
- data/lib/smartsheet/constants.rb +18 -18
- data/lib/smartsheet/endpoints/contacts/contacts.rb +30 -30
- data/lib/smartsheet/endpoints/events/events.rb +20 -20
- data/lib/smartsheet/endpoints/favorites/favorites.rb +159 -159
- data/lib/smartsheet/endpoints/folders/folders.rb +125 -125
- data/lib/smartsheet/endpoints/groups/groups.rb +83 -83
- data/lib/smartsheet/endpoints/home/home.rb +20 -20
- data/lib/smartsheet/endpoints/reports/reports.rb +100 -100
- data/lib/smartsheet/endpoints/reports/reports_share.rb +69 -69
- data/lib/smartsheet/endpoints/search/search.rb +30 -30
- data/lib/smartsheet/endpoints/server_info/server_info.rb +21 -21
- data/lib/smartsheet/endpoints/share/share.rb +58 -58
- data/lib/smartsheet/endpoints/sheets/automation_rules.rb +55 -55
- data/lib/smartsheet/endpoints/sheets/cells.rb +82 -82
- data/lib/smartsheet/endpoints/sheets/columns.rb +66 -66
- data/lib/smartsheet/endpoints/sheets/comments.rb +64 -64
- data/lib/smartsheet/endpoints/sheets/comments_attachments.rb +78 -78
- data/lib/smartsheet/endpoints/sheets/cross_sheet_references.rb +45 -45
- data/lib/smartsheet/endpoints/sheets/discussions.rb +84 -84
- data/lib/smartsheet/endpoints/sheets/discussions_attachments.rb +22 -22
- data/lib/smartsheet/endpoints/sheets/rows.rb +106 -106
- data/lib/smartsheet/endpoints/sheets/rows_attachments.rb +92 -92
- data/lib/smartsheet/endpoints/sheets/sheets.rb +510 -510
- data/lib/smartsheet/endpoints/sheets/sheets_attachments.rb +174 -174
- data/lib/smartsheet/endpoints/sheets/sheets_share.rb +69 -69
- data/lib/smartsheet/endpoints/sights/sights.rb +101 -101
- data/lib/smartsheet/endpoints/sights/sights_share.rb +69 -69
- data/lib/smartsheet/endpoints/templates/templates.rb +29 -29
- data/lib/smartsheet/endpoints/token/token.rb +65 -65
- data/lib/smartsheet/endpoints/update_requests/sent_update_requests.rb +44 -44
- data/lib/smartsheet/endpoints/update_requests/update_requests.rb +74 -74
- data/lib/smartsheet/endpoints/users/alternate_emails.rb +79 -79
- data/lib/smartsheet/endpoints/users/users.rb +77 -77
- data/lib/smartsheet/endpoints/webhooks/webhooks.rb +71 -71
- data/lib/smartsheet/endpoints/workspaces/workspaces.rb +87 -87
- data/lib/smartsheet/endpoints/workspaces/workspaces_share.rb +70 -70
- data/lib/smartsheet/error.rb +69 -69
- data/lib/smartsheet/general_request.rb +74 -74
- data/lib/smartsheet/version.rb +5 -5
- data/smartsheet.gemspec +54 -54
- metadata +3 -4
data/Rakefile
CHANGED
@@ -1,29 +1,29 @@
|
|
1
|
-
require 'bundler/gem_tasks'
|
2
|
-
require 'rake/testtask'
|
3
|
-
require 'rubycritic/rake_task'
|
4
|
-
|
5
|
-
|
6
|
-
Rake::TestTask.new do |t|
|
7
|
-
t.libs << 'test'
|
8
|
-
t.libs << 'lib'
|
9
|
-
t.test_files = FileList['test/**/*_test.rb']
|
10
|
-
end
|
11
|
-
|
12
|
-
namespace :test do
|
13
|
-
Rake::TestTask.new(:units) do |t|
|
14
|
-
t.libs << 'test'
|
15
|
-
t.pattern = 'test/unit/**/*_test.rb'
|
16
|
-
t.verbose = true
|
17
|
-
end
|
18
|
-
|
19
|
-
Rake::TestTask.new(:mock_api) do |t|
|
20
|
-
t.libs << 'test'
|
21
|
-
t.pattern = 'test/mock_api/**/*_test.rb'
|
22
|
-
t.verbose = true
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
|
27
|
-
RubyCritic::RakeTask.new
|
28
|
-
|
29
|
-
task default: :'test:units'
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rubycritic/rake_task'
|
4
|
+
|
5
|
+
|
6
|
+
Rake::TestTask.new do |t|
|
7
|
+
t.libs << 'test'
|
8
|
+
t.libs << 'lib'
|
9
|
+
t.test_files = FileList['test/**/*_test.rb']
|
10
|
+
end
|
11
|
+
|
12
|
+
namespace :test do
|
13
|
+
Rake::TestTask.new(:units) do |t|
|
14
|
+
t.libs << 'test'
|
15
|
+
t.pattern = 'test/unit/**/*_test.rb'
|
16
|
+
t.verbose = true
|
17
|
+
end
|
18
|
+
|
19
|
+
Rake::TestTask.new(:mock_api) do |t|
|
20
|
+
t.libs << 'test'
|
21
|
+
t.pattern = 'test/mock_api/**/*_test.rb'
|
22
|
+
t.verbose = true
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
RubyCritic::RakeTask.new
|
28
|
+
|
29
|
+
task default: :'test:units'
|
data/bin/console
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'bundler/setup'
|
4
|
-
require 'smartsheet/client'
|
5
|
-
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
8
|
-
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require "pry"
|
11
|
-
# Pry.start
|
12
|
-
|
13
|
-
require 'irb'
|
14
|
-
IRB.start(__FILE__)
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'bundler/setup'
|
4
|
+
require 'smartsheet/client'
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require 'irb'
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
#!/usr/bin/env bash
|
2
|
-
set -euo pipefail
|
3
|
-
IFS=$'\n\t'
|
4
|
-
set -vx
|
5
|
-
|
6
|
-
bundle install
|
7
|
-
|
8
|
-
# Do any other automated setup that you need to do here
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
set -euo pipefail
|
3
|
+
IFS=$'\n\t'
|
4
|
+
set -vx
|
5
|
+
|
6
|
+
bundle install
|
7
|
+
|
8
|
+
# Do any other automated setup that you need to do here
|
data/lib/smartsheet.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
# Bootstrap the client as the default import for the gem
|
2
|
-
require 'smartsheet/client'
|
1
|
+
# Bootstrap the client as the default import for the gem
|
2
|
+
require 'smartsheet/client'
|
3
3
|
require 'smartsheet/error'
|
@@ -1,26 +1,26 @@
|
|
1
|
-
module Smartsheet
|
2
|
-
module API
|
3
|
-
# Constructs bodies for accessing the Smartsheet API
|
4
|
-
class BodyBuilder
|
5
|
-
def initialize(endpoint_spec, request_spec)
|
6
|
-
@endpoint_spec = endpoint_spec
|
7
|
-
@request_spec = request_spec
|
8
|
-
end
|
9
|
-
|
10
|
-
def build
|
11
|
-
if endpoint_spec.sending_json?
|
12
|
-
request_spec.json_body
|
13
|
-
elsif endpoint_spec.sending_file?
|
14
|
-
request_spec.file_body
|
15
|
-
else
|
16
|
-
request_spec.body
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
attr_accessor :endpoint_spec, :request_spec
|
23
|
-
|
24
|
-
end
|
25
|
-
end
|
1
|
+
module Smartsheet
|
2
|
+
module API
|
3
|
+
# Constructs bodies for accessing the Smartsheet API
|
4
|
+
class BodyBuilder
|
5
|
+
def initialize(endpoint_spec, request_spec)
|
6
|
+
@endpoint_spec = endpoint_spec
|
7
|
+
@request_spec = request_spec
|
8
|
+
end
|
9
|
+
|
10
|
+
def build
|
11
|
+
if endpoint_spec.sending_json?
|
12
|
+
request_spec.json_body
|
13
|
+
elsif endpoint_spec.sending_file?
|
14
|
+
request_spec.file_body
|
15
|
+
else
|
16
|
+
request_spec.body
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
attr_accessor :endpoint_spec, :request_spec
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
26
|
end
|
@@ -1,54 +1,54 @@
|
|
1
|
-
require_relative 'url_builder'
|
2
|
-
|
3
|
-
module Smartsheet
|
4
|
-
module API
|
5
|
-
# Specification for a single endpoint's configuration
|
6
|
-
class EndpointSpec
|
7
|
-
attr_reader :method, :url_segments, :spec
|
8
|
-
|
9
|
-
# @param method [Symbol] The HTTP method for the endpoint; one of
|
10
|
-
# `[:get, :put, :post, :delete]`
|
11
|
-
#
|
12
|
-
# @param url_segments [Array<String, Symbol>] The segments of the endpoint URL; strings are
|
13
|
-
# added as literal segments, while symbols are mapped to corresponding values in a request
|
14
|
-
# specification
|
15
|
-
#
|
16
|
-
# @param **spec [Hash{Symbol=>Object}] Optional params, the following of which are supported:
|
17
|
-
#
|
18
|
-
# - `:no_auth` - If specified as a key, the endpoint can be called without authentication.
|
19
|
-
# To preserve meaning, it is recommended to associate `:no_auth` with the value `true`.
|
20
|
-
#
|
21
|
-
# - `:body_type` - If specified as a key, the endpoint will require a body to be provided
|
22
|
-
# by the request. When associated with `:json`, it will expect a JSON formattable
|
23
|
-
# body. When associated with `:file`, it will expect file upload parameters.
|
24
|
-
#
|
25
|
-
# - `:headers` - When specified, this is expected to be a map of static HTTP headers that
|
26
|
-
# will be attached to each request.
|
27
|
-
def initialize(method, url, **spec)
|
28
|
-
@method = method
|
29
|
-
@url_segments = url
|
30
|
-
@spec = spec
|
31
|
-
end
|
32
|
-
|
33
|
-
def requires_auth?
|
34
|
-
!spec.key?(:no_auth)
|
35
|
-
end
|
36
|
-
|
37
|
-
def requires_body?
|
38
|
-
spec.key? :body_type
|
39
|
-
end
|
40
|
-
|
41
|
-
def sending_file?
|
42
|
-
requires_body? && spec[:body_type] == :file
|
43
|
-
end
|
44
|
-
|
45
|
-
def sending_json?
|
46
|
-
requires_body? && spec[:body_type] == :json
|
47
|
-
end
|
48
|
-
|
49
|
-
def headers
|
50
|
-
spec.key?(:headers) ? spec[:headers] : {}
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
1
|
+
require_relative 'url_builder'
|
2
|
+
|
3
|
+
module Smartsheet
|
4
|
+
module API
|
5
|
+
# Specification for a single endpoint's configuration
|
6
|
+
class EndpointSpec
|
7
|
+
attr_reader :method, :url_segments, :spec
|
8
|
+
|
9
|
+
# @param method [Symbol] The HTTP method for the endpoint; one of
|
10
|
+
# `[:get, :put, :post, :delete]`
|
11
|
+
#
|
12
|
+
# @param url_segments [Array<String, Symbol>] The segments of the endpoint URL; strings are
|
13
|
+
# added as literal segments, while symbols are mapped to corresponding values in a request
|
14
|
+
# specification
|
15
|
+
#
|
16
|
+
# @param **spec [Hash{Symbol=>Object}] Optional params, the following of which are supported:
|
17
|
+
#
|
18
|
+
# - `:no_auth` - If specified as a key, the endpoint can be called without authentication.
|
19
|
+
# To preserve meaning, it is recommended to associate `:no_auth` with the value `true`.
|
20
|
+
#
|
21
|
+
# - `:body_type` - If specified as a key, the endpoint will require a body to be provided
|
22
|
+
# by the request. When associated with `:json`, it will expect a JSON formattable
|
23
|
+
# body. When associated with `:file`, it will expect file upload parameters.
|
24
|
+
#
|
25
|
+
# - `:headers` - When specified, this is expected to be a map of static HTTP headers that
|
26
|
+
# will be attached to each request.
|
27
|
+
def initialize(method, url, **spec)
|
28
|
+
@method = method
|
29
|
+
@url_segments = url
|
30
|
+
@spec = spec
|
31
|
+
end
|
32
|
+
|
33
|
+
def requires_auth?
|
34
|
+
!spec.key?(:no_auth)
|
35
|
+
end
|
36
|
+
|
37
|
+
def requires_body?
|
38
|
+
spec.key? :body_type
|
39
|
+
end
|
40
|
+
|
41
|
+
def sending_file?
|
42
|
+
requires_body? && spec[:body_type] == :file
|
43
|
+
end
|
44
|
+
|
45
|
+
def sending_json?
|
46
|
+
requires_body? && spec[:body_type] == :json
|
47
|
+
end
|
48
|
+
|
49
|
+
def headers
|
50
|
+
spec.key?(:headers) ? spec[:headers] : {}
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -1,46 +1,46 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
require 'faraday_middleware'
|
3
|
-
require 'smartsheet/api/request'
|
4
|
-
require 'smartsheet/api/faraday_adapter/middleware/faraday_error_translator'
|
5
|
-
require 'smartsheet/api/faraday_adapter/middleware/response_parser'
|
6
|
-
|
7
|
-
module Smartsheet
|
8
|
-
module API
|
9
|
-
# Makes calls to the Smartsheet API through Faraday
|
10
|
-
class FaradayNetClient
|
11
|
-
def initialize
|
12
|
-
create_connection
|
13
|
-
end
|
14
|
-
|
15
|
-
# Expected output:
|
16
|
-
# - returned Success Response
|
17
|
-
# - returned Error Response
|
18
|
-
# - thrown Request Error
|
19
|
-
def make_request(request)
|
20
|
-
response = conn.send(request.method) do |req|
|
21
|
-
req.url(request.url)
|
22
|
-
req.headers = request.headers
|
23
|
-
req.params = request.params
|
24
|
-
req.body = request.body
|
25
|
-
end
|
26
|
-
|
27
|
-
response.body
|
28
|
-
end
|
29
|
-
|
30
|
-
private
|
31
|
-
|
32
|
-
def create_connection
|
33
|
-
@conn = Faraday.new do |conn|
|
34
|
-
conn.use Middleware::FaradayErrorTranslator
|
35
|
-
conn.use Middleware::ResponseParser
|
36
|
-
|
37
|
-
conn.use :gzip
|
38
|
-
|
39
|
-
conn.adapter Faraday.default_adapter
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
attr_reader :conn
|
44
|
-
end
|
45
|
-
end
|
1
|
+
require 'faraday'
|
2
|
+
require 'faraday_middleware'
|
3
|
+
require 'smartsheet/api/request'
|
4
|
+
require 'smartsheet/api/faraday_adapter/middleware/faraday_error_translator'
|
5
|
+
require 'smartsheet/api/faraday_adapter/middleware/response_parser'
|
6
|
+
|
7
|
+
module Smartsheet
|
8
|
+
module API
|
9
|
+
# Makes calls to the Smartsheet API through Faraday
|
10
|
+
class FaradayNetClient
|
11
|
+
def initialize
|
12
|
+
create_connection
|
13
|
+
end
|
14
|
+
|
15
|
+
# Expected output:
|
16
|
+
# - returned Success Response
|
17
|
+
# - returned Error Response
|
18
|
+
# - thrown Request Error
|
19
|
+
def make_request(request)
|
20
|
+
response = conn.send(request.method) do |req|
|
21
|
+
req.url(request.url)
|
22
|
+
req.headers = request.headers
|
23
|
+
req.params = request.params
|
24
|
+
req.body = request.body
|
25
|
+
end
|
26
|
+
|
27
|
+
response.body
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def create_connection
|
33
|
+
@conn = Faraday.new do |conn|
|
34
|
+
conn.use Middleware::FaradayErrorTranslator
|
35
|
+
conn.use Middleware::ResponseParser
|
36
|
+
|
37
|
+
conn.use :gzip
|
38
|
+
|
39
|
+
conn.adapter Faraday.default_adapter
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
attr_reader :conn
|
44
|
+
end
|
45
|
+
end
|
46
46
|
end
|
@@ -1,70 +1,70 @@
|
|
1
|
-
module Smartsheet
|
2
|
-
module API
|
3
|
-
# Builds response objects from Faraday response environments
|
4
|
-
class FaradayResponse
|
5
|
-
def self.from_response_env(faraday_env)
|
6
|
-
if faraday_env[:body].kind_of?(Hash) && faraday_env[:body].key?(:errorCode)
|
7
|
-
FaradayErrorResponse.new(faraday_env[:body], faraday_env)
|
8
|
-
elsif faraday_env.success?
|
9
|
-
FaradaySuccessResponse.new(faraday_env[:body], faraday_env)
|
10
|
-
else
|
11
|
-
raise HttpResponseError.new(
|
12
|
-
status_code: faraday_env[:status],
|
13
|
-
reason_phrase: faraday_env[:reason_phrase],
|
14
|
-
headers: faraday_env[:response_headers],
|
15
|
-
message: "#{faraday_env[:status]} #{faraday_env[:reason_phrase]}"
|
16
|
-
)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
attr_reader :status_code, :reason_phrase, :headers
|
21
|
-
|
22
|
-
def initialize(faraday_env)
|
23
|
-
@status_code = faraday_env[:status]
|
24
|
-
@reason_phrase = faraday_env[:reason_phrase]
|
25
|
-
@headers = faraday_env[:response_headers]
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
# Provides a Smartsheet error response from a Faraday response environment
|
30
|
-
class FaradayErrorResponse < FaradayResponse
|
31
|
-
RETRYABLE_ERRORS = 4001..4004
|
32
|
-
|
33
|
-
attr_reader :error_code, :message, :ref_id, :detail
|
34
|
-
|
35
|
-
def initialize(result, faraday_env)
|
36
|
-
super(faraday_env)
|
37
|
-
@error_code = result[:errorCode]
|
38
|
-
@message = result[:message]
|
39
|
-
@ref_id = result[:refId]
|
40
|
-
@detail = result[:detail]
|
41
|
-
end
|
42
|
-
|
43
|
-
def should_retry?
|
44
|
-
RETRYABLE_ERRORS.include? error_code
|
45
|
-
end
|
46
|
-
|
47
|
-
def success?
|
48
|
-
false
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
# Provides a Smartsheet success response from a Faraday response environment
|
53
|
-
class FaradaySuccessResponse < FaradayResponse
|
54
|
-
attr_reader :result
|
55
|
-
|
56
|
-
def initialize(result, faraday_env)
|
57
|
-
super(faraday_env)
|
58
|
-
@result = result
|
59
|
-
end
|
60
|
-
|
61
|
-
def should_retry?
|
62
|
-
false
|
63
|
-
end
|
64
|
-
|
65
|
-
def success?
|
66
|
-
true
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
1
|
+
module Smartsheet
|
2
|
+
module API
|
3
|
+
# Builds response objects from Faraday response environments
|
4
|
+
class FaradayResponse
|
5
|
+
def self.from_response_env(faraday_env)
|
6
|
+
if faraday_env[:body].kind_of?(Hash) && faraday_env[:body].key?(:errorCode)
|
7
|
+
FaradayErrorResponse.new(faraday_env[:body], faraday_env)
|
8
|
+
elsif faraday_env.success?
|
9
|
+
FaradaySuccessResponse.new(faraday_env[:body], faraday_env)
|
10
|
+
else
|
11
|
+
raise HttpResponseError.new(
|
12
|
+
status_code: faraday_env[:status],
|
13
|
+
reason_phrase: faraday_env[:reason_phrase],
|
14
|
+
headers: faraday_env[:response_headers],
|
15
|
+
message: "#{faraday_env[:status]} #{faraday_env[:reason_phrase]}"
|
16
|
+
)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
attr_reader :status_code, :reason_phrase, :headers
|
21
|
+
|
22
|
+
def initialize(faraday_env)
|
23
|
+
@status_code = faraday_env[:status]
|
24
|
+
@reason_phrase = faraday_env[:reason_phrase]
|
25
|
+
@headers = faraday_env[:response_headers]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# Provides a Smartsheet error response from a Faraday response environment
|
30
|
+
class FaradayErrorResponse < FaradayResponse
|
31
|
+
RETRYABLE_ERRORS = 4001..4004
|
32
|
+
|
33
|
+
attr_reader :error_code, :message, :ref_id, :detail
|
34
|
+
|
35
|
+
def initialize(result, faraday_env)
|
36
|
+
super(faraday_env)
|
37
|
+
@error_code = result[:errorCode]
|
38
|
+
@message = result[:message]
|
39
|
+
@ref_id = result[:refId]
|
40
|
+
@detail = result[:detail]
|
41
|
+
end
|
42
|
+
|
43
|
+
def should_retry?
|
44
|
+
RETRYABLE_ERRORS.include? error_code
|
45
|
+
end
|
46
|
+
|
47
|
+
def success?
|
48
|
+
false
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# Provides a Smartsheet success response from a Faraday response environment
|
53
|
+
class FaradaySuccessResponse < FaradayResponse
|
54
|
+
attr_reader :result
|
55
|
+
|
56
|
+
def initialize(result, faraday_env)
|
57
|
+
super(faraday_env)
|
58
|
+
@result = result
|
59
|
+
end
|
60
|
+
|
61
|
+
def should_retry?
|
62
|
+
false
|
63
|
+
end
|
64
|
+
|
65
|
+
def success?
|
66
|
+
true
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|