smartsheet 1.0.0.beta.0

Sign up to get free protection for your applications and to get access to all the features.
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