smartsheet 2.77.0 → 2.77.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +12 -12
  3. data/.rubocop.yml +4 -4
  4. data/.travis.yml +26 -15
  5. data/.yardopts +3 -3
  6. data/ADVANCED.md +78 -78
  7. data/CHANGELOG.md +115 -112
  8. data/Gemfile +6 -6
  9. data/LICENSE +202 -202
  10. data/README.md +246 -246
  11. data/Rakefile +29 -29
  12. data/bin/console +14 -14
  13. data/bin/setup +8 -8
  14. data/lib/smartsheet.rb +2 -2
  15. data/lib/smartsheet/api/body_builder.rb +25 -25
  16. data/lib/smartsheet/api/endpoint_spec.rb +54 -54
  17. data/lib/smartsheet/api/faraday_adapter/faraday_net_client.rb +45 -45
  18. data/lib/smartsheet/api/faraday_adapter/faraday_response.rb +70 -70
  19. data/lib/smartsheet/api/faraday_adapter/middleware/faraday_error_translator.rb +20 -20
  20. data/lib/smartsheet/api/faraday_adapter/middleware/response_parser.rb +25 -25
  21. data/lib/smartsheet/api/file_spec.rb +55 -55
  22. data/lib/smartsheet/api/header_builder.rb +96 -96
  23. data/lib/smartsheet/api/request.rb +42 -42
  24. data/lib/smartsheet/api/request_client.rb +43 -43
  25. data/lib/smartsheet/api/request_logger.rb +182 -182
  26. data/lib/smartsheet/api/request_spec.rb +57 -57
  27. data/lib/smartsheet/api/response_net_client_decorator.rb +54 -54
  28. data/lib/smartsheet/api/retry_logic.rb +40 -40
  29. data/lib/smartsheet/api/retry_net_client_decorator.rb +37 -37
  30. data/lib/smartsheet/api/url_builder.rb +25 -25
  31. data/lib/smartsheet/client.rb +193 -193
  32. data/lib/smartsheet/constants.rb +18 -18
  33. data/lib/smartsheet/endpoints/contacts/contacts.rb +30 -30
  34. data/lib/smartsheet/endpoints/events/events.rb +20 -20
  35. data/lib/smartsheet/endpoints/favorites/favorites.rb +159 -159
  36. data/lib/smartsheet/endpoints/folders/folders.rb +125 -125
  37. data/lib/smartsheet/endpoints/groups/groups.rb +83 -83
  38. data/lib/smartsheet/endpoints/home/home.rb +20 -20
  39. data/lib/smartsheet/endpoints/reports/reports.rb +100 -100
  40. data/lib/smartsheet/endpoints/reports/reports_share.rb +69 -69
  41. data/lib/smartsheet/endpoints/search/search.rb +30 -30
  42. data/lib/smartsheet/endpoints/server_info/server_info.rb +21 -21
  43. data/lib/smartsheet/endpoints/share/share.rb +58 -58
  44. data/lib/smartsheet/endpoints/sheets/automation_rules.rb +55 -55
  45. data/lib/smartsheet/endpoints/sheets/cells.rb +82 -82
  46. data/lib/smartsheet/endpoints/sheets/columns.rb +66 -66
  47. data/lib/smartsheet/endpoints/sheets/comments.rb +64 -64
  48. data/lib/smartsheet/endpoints/sheets/comments_attachments.rb +78 -78
  49. data/lib/smartsheet/endpoints/sheets/cross_sheet_references.rb +45 -45
  50. data/lib/smartsheet/endpoints/sheets/discussions.rb +84 -84
  51. data/lib/smartsheet/endpoints/sheets/discussions_attachments.rb +22 -22
  52. data/lib/smartsheet/endpoints/sheets/rows.rb +106 -106
  53. data/lib/smartsheet/endpoints/sheets/rows_attachments.rb +92 -92
  54. data/lib/smartsheet/endpoints/sheets/sheets.rb +510 -510
  55. data/lib/smartsheet/endpoints/sheets/sheets_attachments.rb +174 -174
  56. data/lib/smartsheet/endpoints/sheets/sheets_share.rb +69 -69
  57. data/lib/smartsheet/endpoints/sights/sights.rb +101 -101
  58. data/lib/smartsheet/endpoints/sights/sights_share.rb +69 -69
  59. data/lib/smartsheet/endpoints/templates/templates.rb +29 -29
  60. data/lib/smartsheet/endpoints/token/token.rb +65 -65
  61. data/lib/smartsheet/endpoints/update_requests/sent_update_requests.rb +44 -44
  62. data/lib/smartsheet/endpoints/update_requests/update_requests.rb +74 -74
  63. data/lib/smartsheet/endpoints/users/alternate_emails.rb +79 -79
  64. data/lib/smartsheet/endpoints/users/users.rb +77 -77
  65. data/lib/smartsheet/endpoints/webhooks/webhooks.rb +71 -71
  66. data/lib/smartsheet/endpoints/workspaces/workspaces.rb +87 -87
  67. data/lib/smartsheet/endpoints/workspaces/workspaces_share.rb +70 -70
  68. data/lib/smartsheet/error.rb +69 -69
  69. data/lib/smartsheet/general_request.rb +74 -74
  70. data/lib/smartsheet/version.rb +5 -5
  71. data/smartsheet.gemspec +54 -54
  72. 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