smartsheet 1.0.0.beta.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 (68) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rubocop.yml +5 -0
  4. data/.travis.yml +6 -0
  5. data/Gemfile +6 -0
  6. data/LICENSE +202 -0
  7. data/README.md +139 -0
  8. data/Rakefile +13 -0
  9. data/bin/console +14 -0
  10. data/bin/setup +8 -0
  11. data/lib/smartsheet.rb +3 -0
  12. data/lib/smartsheet/api/body_builder.rb +26 -0
  13. data/lib/smartsheet/api/endpoint_spec.rb +35 -0
  14. data/lib/smartsheet/api/faraday_adapter/faraday_net_client.rb +42 -0
  15. data/lib/smartsheet/api/faraday_adapter/faraday_response.rb +60 -0
  16. data/lib/smartsheet/api/faraday_adapter/middleware/faraday_error_translator.rb +20 -0
  17. data/lib/smartsheet/api/faraday_adapter/middleware/response_parser.rb +25 -0
  18. data/lib/smartsheet/api/file_spec.rb +28 -0
  19. data/lib/smartsheet/api/header_builder.rb +85 -0
  20. data/lib/smartsheet/api/request.rb +29 -0
  21. data/lib/smartsheet/api/request_client.rb +26 -0
  22. data/lib/smartsheet/api/request_logger.rb +148 -0
  23. data/lib/smartsheet/api/request_spec.rb +43 -0
  24. data/lib/smartsheet/api/response_net_client_decorator.rb +47 -0
  25. data/lib/smartsheet/api/retry_logic.rb +37 -0
  26. data/lib/smartsheet/api/retry_net_client_decorator.rb +36 -0
  27. data/lib/smartsheet/api/url_builder.rb +25 -0
  28. data/lib/smartsheet/client.rb +115 -0
  29. data/lib/smartsheet/constants.rb +16 -0
  30. data/lib/smartsheet/endpoints/contacts/contacts.rb +29 -0
  31. data/lib/smartsheet/endpoints/favorites/favorites.rb +158 -0
  32. data/lib/smartsheet/endpoints/folders/folders.rb +124 -0
  33. data/lib/smartsheet/endpoints/groups/groups.rb +82 -0
  34. data/lib/smartsheet/endpoints/home/home.rb +19 -0
  35. data/lib/smartsheet/endpoints/reports/reports.rb +96 -0
  36. data/lib/smartsheet/endpoints/reports/reports_share.rb +68 -0
  37. data/lib/smartsheet/endpoints/search/search.rb +29 -0
  38. data/lib/smartsheet/endpoints/server_info/server_info.rb +19 -0
  39. data/lib/smartsheet/endpoints/share/share.rb +58 -0
  40. data/lib/smartsheet/endpoints/sheets/cells.rb +80 -0
  41. data/lib/smartsheet/endpoints/sheets/columns.rb +65 -0
  42. data/lib/smartsheet/endpoints/sheets/comments.rb +60 -0
  43. data/lib/smartsheet/endpoints/sheets/comments_attachments.rb +77 -0
  44. data/lib/smartsheet/endpoints/sheets/discussions.rb +80 -0
  45. data/lib/smartsheet/endpoints/sheets/discussions_attachments.rb +21 -0
  46. data/lib/smartsheet/endpoints/sheets/rows.rb +91 -0
  47. data/lib/smartsheet/endpoints/sheets/rows_attachments.rb +91 -0
  48. data/lib/smartsheet/endpoints/sheets/sheets.rb +301 -0
  49. data/lib/smartsheet/endpoints/sheets/sheets_attachments.rb +173 -0
  50. data/lib/smartsheet/endpoints/sheets/sheets_share.rb +68 -0
  51. data/lib/smartsheet/endpoints/sights/sights.rb +97 -0
  52. data/lib/smartsheet/endpoints/sights/sights_share.rb +68 -0
  53. data/lib/smartsheet/endpoints/templates/templates.rb +28 -0
  54. data/lib/smartsheet/endpoints/token/token.rb +57 -0
  55. data/lib/smartsheet/endpoints/update_requests/sent_update_requests.rb +42 -0
  56. data/lib/smartsheet/endpoints/update_requests/update_requests.rb +69 -0
  57. data/lib/smartsheet/endpoints/users/alternate_emails.rb +77 -0
  58. data/lib/smartsheet/endpoints/users/users.rb +73 -0
  59. data/lib/smartsheet/endpoints/webhooks/webhooks.rb +70 -0
  60. data/lib/smartsheet/endpoints/workspaces/workspaces.rb +83 -0
  61. data/lib/smartsheet/endpoints/workspaces/workspaces_share.rb +68 -0
  62. data/lib/smartsheet/error.rb +30 -0
  63. data/lib/smartsheet/general_request.rb +53 -0
  64. data/lib/smartsheet/version.rb +5 -0
  65. data/read-write-sheet/config.json +4 -0
  66. data/read-write-sheet/read_write_sheet.rb +89 -0
  67. data/smartsheet.gemspec +47 -0
  68. metadata +279 -0
@@ -0,0 +1,124 @@
1
+ module Smartsheet
2
+ class Folders
3
+ attr_reader :client
4
+ private :client
5
+
6
+ def initialize(client)
7
+ @client = client
8
+ end
9
+
10
+ def copy(folder_id:, body:, params: {}, header_overrides: {})
11
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['folders', :folder_id, 'copy'], body_type: :json)
12
+ request_spec = Smartsheet::API::RequestSpec.new(
13
+ header_overrides: header_overrides,
14
+ params: params,
15
+ body: body,
16
+ folder_id: folder_id
17
+ )
18
+ client.make_request(endpoint_spec, request_spec)
19
+ end
20
+
21
+ def create(body:, params: {}, header_overrides: {})
22
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['home', 'folders'], body_type: :json)
23
+ request_spec = Smartsheet::API::RequestSpec.new(
24
+ params: params,
25
+ header_overrides: header_overrides,
26
+ body: body
27
+ )
28
+ client.make_request(endpoint_spec, request_spec)
29
+ end
30
+
31
+ def create_in_folder(folder_id:, body:, params: {}, header_overrides: {})
32
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['folders', :folder_id, 'folders'], body_type: :json)
33
+ request_spec = Smartsheet::API::RequestSpec.new(
34
+ params: params,
35
+ header_overrides: header_overrides,
36
+ body: body,
37
+ folder_id: folder_id
38
+ )
39
+ client.make_request(endpoint_spec, request_spec)
40
+ end
41
+
42
+ def create_in_workspace(workspace_id:, body:, params: {}, header_overrides: {})
43
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['workspaces', :workspace_id, 'folders'], body_type: :json)
44
+ request_spec = Smartsheet::API::RequestSpec.new(
45
+ params: params,
46
+ header_overrides: header_overrides,
47
+ body: body,
48
+ workspace_id: workspace_id
49
+ )
50
+ client.make_request(endpoint_spec, request_spec)
51
+ end
52
+
53
+ def delete(folder_id:, params: {}, header_overrides: {})
54
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:delete, ['folders', :folder_id])
55
+ request_spec = Smartsheet::API::RequestSpec.new(
56
+ params: params,
57
+ header_overrides: header_overrides,
58
+ folder_id: folder_id
59
+ )
60
+ client.make_request(endpoint_spec, request_spec)
61
+ end
62
+
63
+ def get(folder_id:, params: {}, header_overrides: {})
64
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['folders', :folder_id])
65
+ request_spec = Smartsheet::API::RequestSpec.new(
66
+ header_overrides: header_overrides,
67
+ params: params,
68
+ folder_id: folder_id
69
+ )
70
+ client.make_request(endpoint_spec, request_spec)
71
+ end
72
+
73
+ def list(params: {}, header_overrides: {})
74
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['home', 'folders'])
75
+ request_spec = Smartsheet::API::RequestSpec.new(
76
+ header_overrides: header_overrides,
77
+ params: params
78
+ )
79
+ client.make_request(endpoint_spec, request_spec)
80
+ end
81
+
82
+ def list_in_folder(folder_id:, params: {}, header_overrides: {})
83
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['folders', :folder_id, 'folders'])
84
+ request_spec = Smartsheet::API::RequestSpec.new(
85
+ header_overrides: header_overrides,
86
+ params: params,
87
+ folder_id: folder_id
88
+ )
89
+ client.make_request(endpoint_spec, request_spec)
90
+ end
91
+
92
+ def list_in_workspace(workspace_id:, params: {}, header_overrides: {})
93
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['workspaces', :workspace_id, 'folders'])
94
+ request_spec = Smartsheet::API::RequestSpec.new(
95
+ header_overrides: header_overrides,
96
+ params: params,
97
+ workspace_id: workspace_id
98
+ )
99
+ client.make_request(endpoint_spec, request_spec)
100
+ end
101
+
102
+ def move(folder_id:, body:, params: {}, header_overrides: {})
103
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['folders', :folder_id, 'move'], body_type: :json)
104
+ request_spec = Smartsheet::API::RequestSpec.new(
105
+ params: params,
106
+ header_overrides: header_overrides,
107
+ body: body,
108
+ folder_id: folder_id
109
+ )
110
+ client.make_request(endpoint_spec, request_spec)
111
+ end
112
+
113
+ def update(folder_id:, body:, params: {}, header_overrides: {})
114
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:put, ['folders', :folder_id], body_type: :json)
115
+ request_spec = Smartsheet::API::RequestSpec.new(
116
+ params: params,
117
+ header_overrides: header_overrides,
118
+ body: body,
119
+ folder_id: folder_id
120
+ )
121
+ client.make_request(endpoint_spec, request_spec)
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,82 @@
1
+ module Smartsheet
2
+ class Groups
3
+ attr_reader :client
4
+ private :client
5
+
6
+ def initialize(client)
7
+ @client = client
8
+ end
9
+
10
+ def create(body:, params: {}, header_overrides: {})
11
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['groups'], body_type: :json)
12
+ request_spec = Smartsheet::API::RequestSpec.new(
13
+ params: params,
14
+ header_overrides: header_overrides,
15
+ body: body
16
+ )
17
+ client.make_request(endpoint_spec, request_spec)
18
+ end
19
+
20
+ def delete(group_id:, params: {}, header_overrides: {})
21
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:delete, ['groups', :group_id])
22
+ request_spec = Smartsheet::API::RequestSpec.new(
23
+ params: params,
24
+ header_overrides: header_overrides,
25
+ group_id: group_id
26
+ )
27
+ client.make_request(endpoint_spec, request_spec)
28
+ end
29
+
30
+ def get(group_id:, params: {}, header_overrides: {})
31
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['groups', :group_id])
32
+ request_spec = Smartsheet::API::RequestSpec.new(
33
+ params: params,
34
+ header_overrides: header_overrides,
35
+ group_id: group_id
36
+ )
37
+ client.make_request(endpoint_spec, request_spec)
38
+ end
39
+
40
+ def list(params: {}, header_overrides: {})
41
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['groups'])
42
+ request_spec = Smartsheet::API::RequestSpec.new(
43
+ header_overrides: header_overrides,
44
+ params: params
45
+ )
46
+ client.make_request(endpoint_spec, request_spec)
47
+ end
48
+
49
+ def update(group_id:, body:, params: {}, header_overrides: {})
50
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:put, ['groups', :group_id], body_type: :json)
51
+ request_spec = Smartsheet::API::RequestSpec.new(
52
+ params: params,
53
+ header_overrides: header_overrides,
54
+ body: body,
55
+ group_id: group_id
56
+ )
57
+ client.make_request(endpoint_spec, request_spec)
58
+ end
59
+
60
+ def add_members(group_id:, body:, params: {}, header_overrides: {})
61
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['groups', :group_id, 'members'], body_type: :json)
62
+ request_spec = Smartsheet::API::RequestSpec.new(
63
+ params: params,
64
+ header_overrides: header_overrides,
65
+ body: body,
66
+ group_id: group_id
67
+ )
68
+ client.make_request(endpoint_spec, request_spec)
69
+ end
70
+
71
+ def remove_member(group_id:, user_id:, params: {}, header_overrides: {})
72
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:delete, ['groups', :group_id, 'members', :user_id])
73
+ request_spec = Smartsheet::API::RequestSpec.new(
74
+ params: params,
75
+ header_overrides: header_overrides,
76
+ group_id: group_id,
77
+ user_id: user_id
78
+ )
79
+ client.make_request(endpoint_spec, request_spec)
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,19 @@
1
+ module Smartsheet
2
+ class Home
3
+ attr_reader :client
4
+ private :client
5
+
6
+ def initialize(client)
7
+ @client = client
8
+ end
9
+
10
+ def list(params: {}, header_overrides: {})
11
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['home'])
12
+ request_spec = Smartsheet::API::RequestSpec.new(
13
+ header_overrides: header_overrides,
14
+ params: params
15
+ )
16
+ client.make_request(endpoint_spec, request_spec)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,96 @@
1
+ require 'smartsheet/constants'
2
+
3
+ require_relative 'reports_share'
4
+
5
+ module Smartsheet
6
+ class Reports
7
+ include Smartsheet::Constants
8
+
9
+ attr_reader :client, :share
10
+ private :client
11
+
12
+ def initialize(client)
13
+ @client = client
14
+
15
+ @share = ReportsShare.new(client)
16
+ end
17
+
18
+ def get(report_id:, params: {}, header_overrides: {})
19
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['reports', :report_id])
20
+ request_spec = Smartsheet::API::RequestSpec.new(
21
+ header_overrides: header_overrides,
22
+ params: params,
23
+ report_id: report_id
24
+ )
25
+ client.make_request(endpoint_spec, request_spec)
26
+ end
27
+
28
+ def get_as_excel(report_id:, params: {}, header_overrides: {})
29
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(
30
+ :get,
31
+ ['reports', :report_id],
32
+ headers: {Accept: EXCEL_TYPE}
33
+ )
34
+ request_spec = Smartsheet::API::RequestSpec.new(
35
+ header_overrides: header_overrides,
36
+ params: params,
37
+ report_id: report_id
38
+ )
39
+ client.make_request(endpoint_spec, request_spec)
40
+ end
41
+
42
+ def get_as_csv(report_id:, params: {}, header_overrides: {})
43
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(
44
+ :get,
45
+ ['reports', :report_id],
46
+ headers: {Accept: CSV_TYPE})
47
+ request_spec = Smartsheet::API::RequestSpec.new(
48
+ header_overrides: header_overrides,
49
+ params: params,
50
+ report_id: report_id
51
+ )
52
+ client.make_request(endpoint_spec, request_spec)
53
+ end
54
+
55
+ def list(params: {}, header_overrides: {})
56
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['reports'])
57
+ request_spec = Smartsheet::API::RequestSpec.new(
58
+ header_overrides: header_overrides,
59
+ params: params
60
+ )
61
+ client.make_request(endpoint_spec, request_spec)
62
+ end
63
+
64
+ def get_publish_status(report_id:, params: {}, header_overrides: {})
65
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['reports', :report_id, 'publish'])
66
+ request_spec = Smartsheet::API::RequestSpec.new(
67
+ params: params,
68
+ header_overrides: header_overrides,
69
+ report_id: report_id
70
+ )
71
+ client.make_request(endpoint_spec, request_spec)
72
+ end
73
+
74
+ def set_publish_status(report_id:, body:, params: {}, header_overrides: {})
75
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:put, ['reports', :report_id, 'publish'], body_type: :json)
76
+ request_spec = Smartsheet::API::RequestSpec.new(
77
+ params: params,
78
+ header_overrides: header_overrides,
79
+ body: body,
80
+ report_id: report_id
81
+ )
82
+ client.make_request(endpoint_spec, request_spec)
83
+ end
84
+
85
+ def send_via_email(report_id:, body:, params: {}, header_overrides: {})
86
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, ['reports', :report_id, 'emails'], body_type: :json)
87
+ request_spec = Smartsheet::API::RequestSpec.new(
88
+ params: params,
89
+ header_overrides: header_overrides,
90
+ body: body,
91
+ report_id: report_id
92
+ )
93
+ client.make_request(endpoint_spec, request_spec)
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,68 @@
1
+ require 'smartsheet/endpoints/share/share'
2
+
3
+ module Smartsheet
4
+ class ReportsShare
5
+ attr_reader :client
6
+ private :client
7
+
8
+ URL = ['reports', :report_id].freeze
9
+
10
+ def initialize(client)
11
+ @client = client
12
+ end
13
+
14
+ def delete(report_id:, share_id:, params: {}, header_overrides: {})
15
+ delete_share(
16
+ share_id: share_id,
17
+ url: URL,
18
+ params: params,
19
+ header_overrides: header_overrides,
20
+ report_id: report_id
21
+ )
22
+ end
23
+
24
+ def get(report_id:, share_id:, params: {}, header_overrides: {})
25
+ get_share(
26
+ share_id: share_id,
27
+ url: URL,
28
+ params: params,
29
+ header_overrides: header_overrides,
30
+ report_id: report_id
31
+ )
32
+ end
33
+
34
+ def list(report_id:, params: {}, header_overrides: {})
35
+ list_share(
36
+ url: URL,
37
+ header_overrides: header_overrides,
38
+ params: params,
39
+ report_id: report_id
40
+ )
41
+ end
42
+
43
+ def create(report_id:, body:, params: {}, header_overrides: {})
44
+ create_share(
45
+ url: URL,
46
+ header_overrides: header_overrides,
47
+ params: params,
48
+ body: body,
49
+ report_id: report_id
50
+ )
51
+ end
52
+
53
+ def update(report_id:, share_id:, body:, params: {}, header_overrides: {})
54
+ update_share(
55
+ share_id: share_id,
56
+ url: URL,
57
+ params: params,
58
+ header_overrides: header_overrides,
59
+ body: body,
60
+ report_id: report_id
61
+ )
62
+ end
63
+
64
+ private
65
+
66
+ include Smartsheet::Share
67
+ end
68
+ end
@@ -0,0 +1,29 @@
1
+ module Smartsheet
2
+ class Search
3
+ attr_reader :client
4
+ private :client
5
+
6
+ def initialize(client)
7
+ @client = client
8
+ end
9
+
10
+ def search_all(query:, params: {}, header_overrides: {})
11
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['search'])
12
+ request_spec = Smartsheet::API::RequestSpec.new(
13
+ header_overrides: header_overrides,
14
+ params: params.merge({query: query})
15
+ )
16
+ client.make_request(endpoint_spec, request_spec)
17
+ end
18
+
19
+ def search_sheet(sheet_id:, query:, params: {}, header_overrides: {})
20
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['search', 'sheets', :sheet_id])
21
+ request_spec = Smartsheet::API::RequestSpec.new(
22
+ header_overrides: header_overrides,
23
+ params: params.merge({query: query}),
24
+ sheet_id: sheet_id
25
+ )
26
+ client.make_request(endpoint_spec, request_spec)
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,19 @@
1
+ module Smartsheet
2
+ class ServerInfo
3
+ attr_reader :client
4
+ private :client
5
+
6
+ def initialize(client)
7
+ @client = client
8
+ end
9
+
10
+ def get(params: {}, header_overrides: {})
11
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, ['serverinfo'], no_auth: true)
12
+ request_spec = Smartsheet::API::RequestSpec.new(
13
+ params: params,
14
+ header_overrides: header_overrides,
15
+ )
16
+ client.make_request(endpoint_spec, request_spec)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,58 @@
1
+ module Smartsheet
2
+ module Share
3
+ def delete_share(share_id:, url:, params:, header_overrides:, **url_args)
4
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:delete, url + ['shares', :share_id])
5
+ request_spec = Smartsheet::API::RequestSpec.new(
6
+ params: params,
7
+ header_overrides: header_overrides,
8
+ share_id: share_id,
9
+ **url_args
10
+ )
11
+ client.make_request(endpoint_spec, request_spec)
12
+ end
13
+
14
+ def get_share(share_id:, url:, params:, header_overrides:, **url_args)
15
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, url + ['shares', :share_id])
16
+ request_spec = Smartsheet::API::RequestSpec.new(
17
+ params: params,
18
+ header_overrides: header_overrides,
19
+ share_id: share_id,
20
+ **url_args
21
+ )
22
+ client.make_request(endpoint_spec, request_spec)
23
+ end
24
+
25
+ def list_share(url:, params:, header_overrides:, **url_args)
26
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:get, url + ['shares'])
27
+ request_spec = Smartsheet::API::RequestSpec.new(
28
+ header_overrides: header_overrides,
29
+ params: params,
30
+ **url_args
31
+ )
32
+ client.make_request(endpoint_spec, request_spec)
33
+ end
34
+
35
+ def create_share(url:, body:, params:, header_overrides:, **url_args)
36
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:post, url + ['shares'], body_type: :json)
37
+ request_spec = Smartsheet::API::RequestSpec.new(
38
+ header_overrides: header_overrides,
39
+ params: params,
40
+ body: body,
41
+ **url_args
42
+ )
43
+ client.make_request(endpoint_spec, request_spec)
44
+ end
45
+
46
+ def update_share(share_id:, url:, body:, params:, header_overrides:, **url_args)
47
+ endpoint_spec = Smartsheet::API::EndpointSpec.new(:put, url + ['shares', :share_id], body_type: :json)
48
+ request_spec = Smartsheet::API::RequestSpec.new(
49
+ params: params,
50
+ header_overrides: header_overrides,
51
+ body: body,
52
+ share_id: share_id,
53
+ **url_args
54
+ )
55
+ client.make_request(endpoint_spec, request_spec)
56
+ end
57
+ end
58
+ end