smartsheet 1.0.0 → 1.1.0

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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +11 -11
  3. data/.rubocop.yml +4 -4
  4. data/.travis.yml +13 -6
  5. data/.yardopts +3 -3
  6. data/CHANGELOG.md +103 -0
  7. data/Gemfile +6 -6
  8. data/LICENSE +202 -202
  9. data/README.md +214 -141
  10. data/Rakefile +29 -23
  11. data/bin/console +14 -14
  12. data/bin/setup +8 -8
  13. data/lib/smartsheet.rb +2 -2
  14. data/lib/smartsheet/api/body_builder.rb +25 -25
  15. data/lib/smartsheet/api/endpoint_spec.rb +54 -36
  16. data/lib/smartsheet/api/faraday_adapter/faraday_net_client.rb +45 -42
  17. data/lib/smartsheet/api/faraday_adapter/faraday_response.rb +70 -70
  18. data/lib/smartsheet/api/faraday_adapter/middleware/faraday_error_translator.rb +20 -20
  19. data/lib/smartsheet/api/faraday_adapter/middleware/response_parser.rb +25 -25
  20. data/lib/smartsheet/api/file_spec.rb +31 -31
  21. data/lib/smartsheet/api/header_builder.rb +90 -84
  22. data/lib/smartsheet/api/request.rb +42 -29
  23. data/lib/smartsheet/api/request_client.rb +43 -27
  24. data/lib/smartsheet/api/request_logger.rb +182 -182
  25. data/lib/smartsheet/api/request_spec.rb +57 -44
  26. data/lib/smartsheet/api/response_net_client_decorator.rb +54 -54
  27. data/lib/smartsheet/api/retry_logic.rb +40 -40
  28. data/lib/smartsheet/api/retry_net_client_decorator.rb +37 -37
  29. data/lib/smartsheet/api/url_builder.rb +25 -25
  30. data/lib/smartsheet/client.rb +191 -185
  31. data/lib/smartsheet/constants.rb +15 -15
  32. data/lib/smartsheet/endpoints/contacts/contacts.rb +30 -30
  33. data/lib/smartsheet/endpoints/favorites/favorites.rb +159 -159
  34. data/lib/smartsheet/endpoints/folders/folders.rb +125 -125
  35. data/lib/smartsheet/endpoints/groups/groups.rb +83 -83
  36. data/lib/smartsheet/endpoints/home/home.rb +20 -20
  37. data/lib/smartsheet/endpoints/reports/reports.rb +100 -100
  38. data/lib/smartsheet/endpoints/reports/reports_share.rb +69 -69
  39. data/lib/smartsheet/endpoints/search/search.rb +30 -30
  40. data/lib/smartsheet/endpoints/server_info/server_info.rb +21 -21
  41. data/lib/smartsheet/endpoints/share/share.rb +58 -58
  42. data/lib/smartsheet/endpoints/sheets/automation_rules.rb +56 -0
  43. data/lib/smartsheet/endpoints/sheets/cells.rb +82 -82
  44. data/lib/smartsheet/endpoints/sheets/columns.rb +66 -66
  45. data/lib/smartsheet/endpoints/sheets/comments.rb +64 -64
  46. data/lib/smartsheet/endpoints/sheets/comments_attachments.rb +78 -78
  47. data/lib/smartsheet/endpoints/sheets/cross_sheet_references.rb +45 -0
  48. data/lib/smartsheet/endpoints/sheets/discussions.rb +84 -84
  49. data/lib/smartsheet/endpoints/sheets/discussions_attachments.rb +22 -22
  50. data/lib/smartsheet/endpoints/sheets/rows.rb +106 -95
  51. data/lib/smartsheet/endpoints/sheets/rows_attachments.rb +92 -92
  52. data/lib/smartsheet/endpoints/sheets/sheets.rb +326 -317
  53. data/lib/smartsheet/endpoints/sheets/sheets_attachments.rb +174 -174
  54. data/lib/smartsheet/endpoints/sheets/sheets_share.rb +69 -69
  55. data/lib/smartsheet/endpoints/sights/sights.rb +101 -101
  56. data/lib/smartsheet/endpoints/sights/sights_share.rb +69 -69
  57. data/lib/smartsheet/endpoints/templates/templates.rb +29 -29
  58. data/lib/smartsheet/endpoints/token/token.rb +65 -60
  59. data/lib/smartsheet/endpoints/update_requests/sent_update_requests.rb +44 -44
  60. data/lib/smartsheet/endpoints/update_requests/update_requests.rb +74 -74
  61. data/lib/smartsheet/endpoints/users/alternate_emails.rb +79 -79
  62. data/lib/smartsheet/endpoints/users/users.rb +77 -77
  63. data/lib/smartsheet/endpoints/webhooks/webhooks.rb +71 -71
  64. data/lib/smartsheet/endpoints/workspaces/workspaces.rb +87 -87
  65. data/lib/smartsheet/endpoints/workspaces/workspaces_share.rb +70 -70
  66. data/lib/smartsheet/error.rb +69 -69
  67. data/lib/smartsheet/general_request.rb +74 -74
  68. data/lib/smartsheet/version.rb +5 -5
  69. data/smartsheet.gemspec +54 -52
  70. metadata +34 -3
@@ -1,16 +1,16 @@
1
- module Smartsheet
2
- module Constants
3
- VERSION = '1.0.0'.freeze
4
-
5
- USER_AGENT = 'smartsheet-ruby-sdk'.freeze
6
- API_URL = 'https://api.smartsheet.com/2.0'.freeze
7
-
8
- JSON_TYPE = 'application/json'.freeze
9
- EXCEL_TYPE = 'application/vnd.ms-excel'.freeze
10
- PDF_TYPE = 'application/pdf'.freeze
11
- CSV_TYPE = 'text/csv'.freeze
12
-
13
- DEFAULT_MAX_RETRY_TIME = 15
14
- DEFAULT_BACKOFF_METHOD = proc { |iteration, _result| 2**iteration + rand }
15
- end
1
+ module Smartsheet
2
+ module Constants
3
+ VERSION = '1.1.0'.freeze
4
+
5
+ USER_AGENT = 'smartsheet-ruby-sdk'.freeze
6
+ API_URL = 'https://api.smartsheet.com/2.0'.freeze
7
+
8
+ JSON_TYPE = 'application/json'.freeze
9
+ EXCEL_TYPE = 'application/vnd.ms-excel'.freeze
10
+ PDF_TYPE = 'application/pdf'.freeze
11
+ CSV_TYPE = 'text/csv'.freeze
12
+
13
+ DEFAULT_MAX_RETRY_TIME = 15
14
+ DEFAULT_BACKOFF_METHOD = proc { |iteration, _result| 2**iteration + rand }
15
+ end
16
16
  end
@@ -1,31 +1,31 @@
1
- module Smartsheet
2
- # Contacts Endpoints
3
- # @see https://smartsheet-platform.github.io/api-docs/?ruby#contacts API Contacts Docs
4
- class Contacts
5
- attr_reader :client
6
- private :client
7
-
8
- def initialize(client)
9
- @client = client
10
- end
11
-
12
- def get(contact_id:, params: {}, header_overrides: {})
13
- endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['contacts', :contact_id])
14
- request_spec = Smartsheet::API::RequestSpec.new(
15
- header_overrides: header_overrides,
16
- params: params,
17
- contact_id: contact_id
18
- )
19
- client.make_request(endpoint_spec, request_spec)
20
- end
21
-
22
- def list(params: {}, header_overrides: {})
23
- endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['contacts'])
24
- request_spec = Smartsheet::API::RequestSpec.new(
25
- header_overrides: header_overrides,
26
- params: params
27
- )
28
- client.make_request(endpoint_spec, request_spec)
29
- end
30
- end
1
+ module Smartsheet
2
+ # Contacts Endpoints
3
+ # @see https://smartsheet-platform.github.io/api-docs/?ruby#contacts API Contacts Docs
4
+ class Contacts
5
+ attr_reader :client
6
+ private :client
7
+
8
+ def initialize(client)
9
+ @client = client
10
+ end
11
+
12
+ def get(contact_id:, params: {}, header_overrides: {})
13
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['contacts', :contact_id])
14
+ request_spec = Smartsheet::API::RequestSpec.new(
15
+ header_overrides: header_overrides,
16
+ params: params,
17
+ contact_id: contact_id
18
+ )
19
+ client.make_request(endpoint_spec, request_spec)
20
+ end
21
+
22
+ def list(params: {}, header_overrides: {})
23
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['contacts'])
24
+ request_spec = Smartsheet::API::RequestSpec.new(
25
+ header_overrides: header_overrides,
26
+ params: params
27
+ )
28
+ client.make_request(endpoint_spec, request_spec)
29
+ end
30
+ end
31
31
  end
@@ -1,160 +1,160 @@
1
- module Smartsheet
2
- # Favorites Endpoints
3
- # @see https://smartsheet-platform.github.io/api-docs/?ruby#favorites API Favorites Docs
4
- class Favorites
5
- attr_reader :client
6
- private :client
7
-
8
- def initialize(client)
9
- @client = client
10
- end
11
-
12
- def add(body:, params: {}, header_overrides: {})
13
- endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['favorites'], body_type: :json)
14
- request_spec = Smartsheet::API::RequestSpec.new(
15
- header_overrides: header_overrides,
16
- params: params,
17
- body: body
18
- )
19
- client.make_request(endpoint_spec, request_spec)
20
- end
21
-
22
- def list(params: {}, header_overrides: {})
23
- endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['favorites'])
24
- request_spec = Smartsheet::API::RequestSpec.new(
25
- header_overrides: header_overrides,
26
- params: params
27
- )
28
- client.make_request(endpoint_spec, request_spec)
29
- end
30
-
31
- def remove_folder(folder_id:, params: {}, header_overrides: {})
32
- remove_favorite(
33
- url: ['folder', :folder_id],
34
- params: params,
35
- header_overrides: header_overrides,
36
- folder_id: folder_id
37
- )
38
- end
39
-
40
- def remove_report(report_id:, params: {}, header_overrides: {})
41
- remove_favorite(
42
- url: ['report', :report_id],
43
- params: params,
44
- header_overrides: header_overrides,
45
- report_id: report_id
46
- )
47
- end
48
-
49
- def remove_sheet(sheet_id:, params: {}, header_overrides: {})
50
- remove_favorite(
51
- url: ['sheet', :sheet_id],
52
- params: params,
53
- header_overrides: header_overrides,
54
- sheet_id: sheet_id
55
- )
56
- end
57
-
58
- def remove_sight(sight_id:, params: {}, header_overrides: {})
59
- remove_favorite(
60
- url: ['sight', :sight_id],
61
- params: params,
62
- header_overrides: header_overrides,
63
- sight_id: sight_id
64
- )
65
- end
66
-
67
- def remove_template(template_id:, params: {}, header_overrides: {})
68
- remove_favorite(
69
- url: ['template', :template_id],
70
- params: params,
71
- header_overrides: header_overrides,
72
- template_id: template_id
73
- )
74
- end
75
-
76
- def remove_workspace(workspace_id:, params: {}, header_overrides: {})
77
- remove_favorite(
78
- url: ['workspace', :workspace_id],
79
- params: params,
80
- header_overrides: header_overrides,
81
- workspace_id: workspace_id
82
- )
83
- end
84
-
85
- def remove_folders(folder_ids:, params: {}, header_overrides: {})
86
- remove_favorites(
87
- url: ['folder'],
88
- params: params,
89
- header_overrides: header_overrides,
90
- object_ids: folder_ids
91
- )
92
- end
93
-
94
- def remove_reports(report_ids:, params: {}, header_overrides: {})
95
- remove_favorites(
96
- url: ['report'],
97
- params: params,
98
- header_overrides: header_overrides,
99
- object_ids: report_ids
100
- )
101
- end
102
-
103
- def remove_sheets(sheet_ids:, params: {}, header_overrides: {})
104
- remove_favorites(
105
- url: ['sheet'],
106
- params: params,
107
- header_overrides: header_overrides,
108
- object_ids: sheet_ids
109
- )
110
- end
111
-
112
- def remove_sights(sight_ids:, params: {}, header_overrides: {})
113
- remove_favorites(
114
- url: ['sight'],
115
- params: params,
116
- header_overrides: header_overrides,
117
- object_ids: sight_ids
118
- )
119
- end
120
-
121
- def remove_templates(template_ids:, params: {}, header_overrides: {})
122
- remove_favorites(
123
- url: ['template'],
124
- params: params,
125
- header_overrides: header_overrides,
126
- object_ids: template_ids
127
- )
128
- end
129
-
130
- def remove_workspaces(workspace_ids:, params: {}, header_overrides: {})
131
- remove_favorites(
132
- url: ['workspace'],
133
- params: params,
134
- header_overrides: header_overrides,
135
- object_ids: workspace_ids
136
- )
137
- end
138
-
139
- private
140
-
141
- def remove_favorite(url:, params:, header_overrides:, **url_args)
142
- endpoint_spec = Smartsheet::API::EndpointSpec.new(:delete, ['favorites'] + url)
143
- request_spec = Smartsheet::API::RequestSpec.new(
144
- header_overrides: header_overrides,
145
- params: params,
146
- **url_args
147
- )
148
- client.make_request(endpoint_spec, request_spec)
149
- end
150
-
151
- def remove_favorites(object_ids:, url:, params:, header_overrides:)
152
- endpoint_spec = Smartsheet::API::EndpointSpec.new(:delete, ['favorites'] + url)
153
- request_spec = Smartsheet::API::RequestSpec.new(
154
- header_overrides: header_overrides,
155
- params: params.merge({objectIds: object_ids.join(',')})
156
- )
157
- client.make_request(endpoint_spec, request_spec)
158
- end
159
- end
1
+ module Smartsheet
2
+ # Favorites Endpoints
3
+ # @see https://smartsheet-platform.github.io/api-docs/?ruby#favorites API Favorites Docs
4
+ class Favorites
5
+ attr_reader :client
6
+ private :client
7
+
8
+ def initialize(client)
9
+ @client = client
10
+ end
11
+
12
+ def add(body:, params: {}, header_overrides: {})
13
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['favorites'], body_type: :json)
14
+ request_spec = Smartsheet::API::RequestSpec.new(
15
+ header_overrides: header_overrides,
16
+ params: params,
17
+ body: body
18
+ )
19
+ client.make_request(endpoint_spec, request_spec)
20
+ end
21
+
22
+ def list(params: {}, header_overrides: {})
23
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['favorites'])
24
+ request_spec = Smartsheet::API::RequestSpec.new(
25
+ header_overrides: header_overrides,
26
+ params: params
27
+ )
28
+ client.make_request(endpoint_spec, request_spec)
29
+ end
30
+
31
+ def remove_folder(folder_id:, params: {}, header_overrides: {})
32
+ remove_favorite(
33
+ url: ['folder', :folder_id],
34
+ params: params,
35
+ header_overrides: header_overrides,
36
+ folder_id: folder_id
37
+ )
38
+ end
39
+
40
+ def remove_report(report_id:, params: {}, header_overrides: {})
41
+ remove_favorite(
42
+ url: ['report', :report_id],
43
+ params: params,
44
+ header_overrides: header_overrides,
45
+ report_id: report_id
46
+ )
47
+ end
48
+
49
+ def remove_sheet(sheet_id:, params: {}, header_overrides: {})
50
+ remove_favorite(
51
+ url: ['sheet', :sheet_id],
52
+ params: params,
53
+ header_overrides: header_overrides,
54
+ sheet_id: sheet_id
55
+ )
56
+ end
57
+
58
+ def remove_sight(sight_id:, params: {}, header_overrides: {})
59
+ remove_favorite(
60
+ url: ['sight', :sight_id],
61
+ params: params,
62
+ header_overrides: header_overrides,
63
+ sight_id: sight_id
64
+ )
65
+ end
66
+
67
+ def remove_template(template_id:, params: {}, header_overrides: {})
68
+ remove_favorite(
69
+ url: ['template', :template_id],
70
+ params: params,
71
+ header_overrides: header_overrides,
72
+ template_id: template_id
73
+ )
74
+ end
75
+
76
+ def remove_workspace(workspace_id:, params: {}, header_overrides: {})
77
+ remove_favorite(
78
+ url: ['workspace', :workspace_id],
79
+ params: params,
80
+ header_overrides: header_overrides,
81
+ workspace_id: workspace_id
82
+ )
83
+ end
84
+
85
+ def remove_folders(folder_ids:, params: {}, header_overrides: {})
86
+ remove_favorites(
87
+ url: ['folder'],
88
+ params: params,
89
+ header_overrides: header_overrides,
90
+ object_ids: folder_ids
91
+ )
92
+ end
93
+
94
+ def remove_reports(report_ids:, params: {}, header_overrides: {})
95
+ remove_favorites(
96
+ url: ['report'],
97
+ params: params,
98
+ header_overrides: header_overrides,
99
+ object_ids: report_ids
100
+ )
101
+ end
102
+
103
+ def remove_sheets(sheet_ids:, params: {}, header_overrides: {})
104
+ remove_favorites(
105
+ url: ['sheet'],
106
+ params: params,
107
+ header_overrides: header_overrides,
108
+ object_ids: sheet_ids
109
+ )
110
+ end
111
+
112
+ def remove_sights(sight_ids:, params: {}, header_overrides: {})
113
+ remove_favorites(
114
+ url: ['sight'],
115
+ params: params,
116
+ header_overrides: header_overrides,
117
+ object_ids: sight_ids
118
+ )
119
+ end
120
+
121
+ def remove_templates(template_ids:, params: {}, header_overrides: {})
122
+ remove_favorites(
123
+ url: ['template'],
124
+ params: params,
125
+ header_overrides: header_overrides,
126
+ object_ids: template_ids
127
+ )
128
+ end
129
+
130
+ def remove_workspaces(workspace_ids:, params: {}, header_overrides: {})
131
+ remove_favorites(
132
+ url: ['workspace'],
133
+ params: params,
134
+ header_overrides: header_overrides,
135
+ object_ids: workspace_ids
136
+ )
137
+ end
138
+
139
+ private
140
+
141
+ def remove_favorite(url:, params:, header_overrides:, **url_args)
142
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:delete, ['favorites'] + url)
143
+ request_spec = Smartsheet::API::RequestSpec.new(
144
+ header_overrides: header_overrides,
145
+ params: params,
146
+ **url_args
147
+ )
148
+ client.make_request(endpoint_spec, request_spec)
149
+ end
150
+
151
+ def remove_favorites(object_ids:, url:, params:, header_overrides:)
152
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:delete, ['favorites'] + url)
153
+ request_spec = Smartsheet::API::RequestSpec.new(
154
+ header_overrides: header_overrides,
155
+ params: params.merge({objectIds: object_ids.join(',')})
156
+ )
157
+ client.make_request(endpoint_spec, request_spec)
158
+ end
159
+ end
160
160
  end
@@ -1,126 +1,126 @@
1
- module Smartsheet
2
- # Folders Endpoints
3
- # @see https://smartsheet-platform.github.io/api-docs/?ruby#folders API Folders Docs
4
- class Folders
5
- attr_reader :client
6
- private :client
7
-
8
- def initialize(client)
9
- @client = client
10
- end
11
-
12
- def copy(folder_id:, body:, params: {}, header_overrides: {})
13
- endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['folders', :folder_id, 'copy'], body_type: :json)
14
- request_spec = Smartsheet::API::RequestSpec.new(
15
- header_overrides: header_overrides,
16
- params: params,
17
- body: body,
18
- folder_id: folder_id
19
- )
20
- client.make_request(endpoint_spec, request_spec)
21
- end
22
-
23
- def create(body:, params: {}, header_overrides: {})
24
- endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['home', 'folders'], body_type: :json)
25
- request_spec = Smartsheet::API::RequestSpec.new(
26
- params: params,
27
- header_overrides: header_overrides,
28
- body: body
29
- )
30
- client.make_request(endpoint_spec, request_spec)
31
- end
32
-
33
- def create_in_folder(folder_id:, body:, params: {}, header_overrides: {})
34
- endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['folders', :folder_id, 'folders'], body_type: :json)
35
- request_spec = Smartsheet::API::RequestSpec.new(
36
- params: params,
37
- header_overrides: header_overrides,
38
- body: body,
39
- folder_id: folder_id
40
- )
41
- client.make_request(endpoint_spec, request_spec)
42
- end
43
-
44
- def create_in_workspace(workspace_id:, body:, params: {}, header_overrides: {})
45
- endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['workspaces', :workspace_id, 'folders'], body_type: :json)
46
- request_spec = Smartsheet::API::RequestSpec.new(
47
- params: params,
48
- header_overrides: header_overrides,
49
- body: body,
50
- workspace_id: workspace_id
51
- )
52
- client.make_request(endpoint_spec, request_spec)
53
- end
54
-
55
- def delete(folder_id:, params: {}, header_overrides: {})
56
- endpoint_spec = Smartsheet::API::EndpointSpec.new(:delete, ['folders', :folder_id])
57
- request_spec = Smartsheet::API::RequestSpec.new(
58
- params: params,
59
- header_overrides: header_overrides,
60
- folder_id: folder_id
61
- )
62
- client.make_request(endpoint_spec, request_spec)
63
- end
64
-
65
- def get(folder_id:, params: {}, header_overrides: {})
66
- endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['folders', :folder_id])
67
- request_spec = Smartsheet::API::RequestSpec.new(
68
- header_overrides: header_overrides,
69
- params: params,
70
- folder_id: folder_id
71
- )
72
- client.make_request(endpoint_spec, request_spec)
73
- end
74
-
75
- def list(params: {}, header_overrides: {})
76
- endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['home', 'folders'])
77
- request_spec = Smartsheet::API::RequestSpec.new(
78
- header_overrides: header_overrides,
79
- params: params
80
- )
81
- client.make_request(endpoint_spec, request_spec)
82
- end
83
-
84
- def list_in_folder(folder_id:, params: {}, header_overrides: {})
85
- endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['folders', :folder_id, 'folders'])
86
- request_spec = Smartsheet::API::RequestSpec.new(
87
- header_overrides: header_overrides,
88
- params: params,
89
- folder_id: folder_id
90
- )
91
- client.make_request(endpoint_spec, request_spec)
92
- end
93
-
94
- def list_in_workspace(workspace_id:, params: {}, header_overrides: {})
95
- endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['workspaces', :workspace_id, 'folders'])
96
- request_spec = Smartsheet::API::RequestSpec.new(
97
- header_overrides: header_overrides,
98
- params: params,
99
- workspace_id: workspace_id
100
- )
101
- client.make_request(endpoint_spec, request_spec)
102
- end
103
-
104
- def move(folder_id:, body:, params: {}, header_overrides: {})
105
- endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['folders', :folder_id, 'move'], body_type: :json)
106
- request_spec = Smartsheet::API::RequestSpec.new(
107
- params: params,
108
- header_overrides: header_overrides,
109
- body: body,
110
- folder_id: folder_id
111
- )
112
- client.make_request(endpoint_spec, request_spec)
113
- end
114
-
115
- def update(folder_id:, body:, params: {}, header_overrides: {})
116
- endpoint_spec = Smartsheet::API::EndpointSpec.new(:put, ['folders', :folder_id], body_type: :json)
117
- request_spec = Smartsheet::API::RequestSpec.new(
118
- params: params,
119
- header_overrides: header_overrides,
120
- body: body,
121
- folder_id: folder_id
122
- )
123
- client.make_request(endpoint_spec, request_spec)
124
- end
125
- end
1
+ module Smartsheet
2
+ # Folders Endpoints
3
+ # @see https://smartsheet-platform.github.io/api-docs/?ruby#folders API Folders Docs
4
+ class Folders
5
+ attr_reader :client
6
+ private :client
7
+
8
+ def initialize(client)
9
+ @client = client
10
+ end
11
+
12
+ def copy(folder_id:, body:, params: {}, header_overrides: {})
13
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['folders', :folder_id, 'copy'], body_type: :json)
14
+ request_spec = Smartsheet::API::RequestSpec.new(
15
+ header_overrides: header_overrides,
16
+ params: params,
17
+ body: body,
18
+ folder_id: folder_id
19
+ )
20
+ client.make_request(endpoint_spec, request_spec)
21
+ end
22
+
23
+ def create(body:, params: {}, header_overrides: {})
24
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['home', 'folders'], body_type: :json)
25
+ request_spec = Smartsheet::API::RequestSpec.new(
26
+ params: params,
27
+ header_overrides: header_overrides,
28
+ body: body
29
+ )
30
+ client.make_request(endpoint_spec, request_spec)
31
+ end
32
+
33
+ def create_in_folder(folder_id:, body:, params: {}, header_overrides: {})
34
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['folders', :folder_id, 'folders'], body_type: :json)
35
+ request_spec = Smartsheet::API::RequestSpec.new(
36
+ params: params,
37
+ header_overrides: header_overrides,
38
+ body: body,
39
+ folder_id: folder_id
40
+ )
41
+ client.make_request(endpoint_spec, request_spec)
42
+ end
43
+
44
+ def create_in_workspace(workspace_id:, body:, params: {}, header_overrides: {})
45
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['workspaces', :workspace_id, 'folders'], body_type: :json)
46
+ request_spec = Smartsheet::API::RequestSpec.new(
47
+ params: params,
48
+ header_overrides: header_overrides,
49
+ body: body,
50
+ workspace_id: workspace_id
51
+ )
52
+ client.make_request(endpoint_spec, request_spec)
53
+ end
54
+
55
+ def delete(folder_id:, params: {}, header_overrides: {})
56
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:delete, ['folders', :folder_id])
57
+ request_spec = Smartsheet::API::RequestSpec.new(
58
+ params: params,
59
+ header_overrides: header_overrides,
60
+ folder_id: folder_id
61
+ )
62
+ client.make_request(endpoint_spec, request_spec)
63
+ end
64
+
65
+ def get(folder_id:, params: {}, header_overrides: {})
66
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['folders', :folder_id])
67
+ request_spec = Smartsheet::API::RequestSpec.new(
68
+ header_overrides: header_overrides,
69
+ params: params,
70
+ folder_id: folder_id
71
+ )
72
+ client.make_request(endpoint_spec, request_spec)
73
+ end
74
+
75
+ def list(params: {}, header_overrides: {})
76
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['home', 'folders'])
77
+ request_spec = Smartsheet::API::RequestSpec.new(
78
+ header_overrides: header_overrides,
79
+ params: params
80
+ )
81
+ client.make_request(endpoint_spec, request_spec)
82
+ end
83
+
84
+ def list_in_folder(folder_id:, params: {}, header_overrides: {})
85
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['folders', :folder_id, 'folders'])
86
+ request_spec = Smartsheet::API::RequestSpec.new(
87
+ header_overrides: header_overrides,
88
+ params: params,
89
+ folder_id: folder_id
90
+ )
91
+ client.make_request(endpoint_spec, request_spec)
92
+ end
93
+
94
+ def list_in_workspace(workspace_id:, params: {}, header_overrides: {})
95
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['workspaces', :workspace_id, 'folders'])
96
+ request_spec = Smartsheet::API::RequestSpec.new(
97
+ header_overrides: header_overrides,
98
+ params: params,
99
+ workspace_id: workspace_id
100
+ )
101
+ client.make_request(endpoint_spec, request_spec)
102
+ end
103
+
104
+ def move(folder_id:, body:, params: {}, header_overrides: {})
105
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['folders', :folder_id, 'move'], body_type: :json)
106
+ request_spec = Smartsheet::API::RequestSpec.new(
107
+ params: params,
108
+ header_overrides: header_overrides,
109
+ body: body,
110
+ folder_id: folder_id
111
+ )
112
+ client.make_request(endpoint_spec, request_spec)
113
+ end
114
+
115
+ def update(folder_id:, body:, params: {}, header_overrides: {})
116
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:put, ['folders', :folder_id], body_type: :json)
117
+ request_spec = Smartsheet::API::RequestSpec.new(
118
+ params: params,
119
+ header_overrides: header_overrides,
120
+ body: body,
121
+ folder_id: folder_id
122
+ )
123
+ client.make_request(endpoint_spec, request_spec)
124
+ end
125
+ end
126
126
  end