zoom_rb 0.11.0 → 1.0.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 (38) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +38 -0
  3. data/Gemfile.lock +6 -6
  4. data/README.md +0 -4
  5. data/lib/zoom/actions/account.rb +18 -51
  6. data/lib/zoom/actions/billing.rb +30 -27
  7. data/lib/zoom/actions/dashboard.rb +11 -22
  8. data/lib/zoom/actions/groups.rb +11 -9
  9. data/lib/zoom/actions/im/chat.rb +11 -24
  10. data/lib/zoom/actions/meeting.rb +34 -67
  11. data/lib/zoom/actions/phone.rb +5 -17
  12. data/lib/zoom/actions/recording.rb +8 -26
  13. data/lib/zoom/actions/report.rb +10 -20
  14. data/lib/zoom/actions/roles.rb +11 -28
  15. data/lib/zoom/actions/sip_audio.rb +16 -57
  16. data/lib/zoom/actions/token.rb +15 -24
  17. data/lib/zoom/actions/user.rb +65 -123
  18. data/lib/zoom/actions/webinar.rb +37 -77
  19. data/lib/zoom/actions.rb +49 -0
  20. data/lib/zoom/utils.rb +10 -7
  21. data/lib/zoom/version.rb +1 -1
  22. data/lib/zoom_rb.rb +1 -0
  23. data/spec/fixtures/error/admin_cannot_activated.json +4 -0
  24. data/spec/fixtures/error/group_not_exist.json +4 -0
  25. data/spec/fixtures/error/not_found_administrator.json +4 -0
  26. data/spec/fixtures/groups/create.json +5 -0
  27. data/spec/fixtures/groups/update.json +0 -0
  28. data/spec/fixtures/user/update_email.json +0 -0
  29. data/spec/fixtures/user/update_status.json +0 -0
  30. data/spec/lib/zoom/actions/groups/create_spec.rb +96 -1
  31. data/spec/lib/zoom/actions/groups/update_spec.rb +59 -0
  32. data/spec/lib/zoom/actions/meeting/create_spec.rb +1 -1
  33. data/spec/lib/zoom/actions/user/create_spec.rb +18 -46
  34. data/spec/lib/zoom/actions/user/update_email_spec.rb +59 -0
  35. data/spec/lib/zoom/actions/user/update_status_spec.rb +59 -0
  36. data/spec/lib/zoom/actions_spec.rb +84 -0
  37. data/spec/lib/zoom/utils_spec.rb +1 -1
  38. metadata +29 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b1cd08a56da2851062cd381b62c75bc0fe3b5c1c809699fd6fa19e268799009c
4
- data.tar.gz: 0a3b24e1e9c460d226590fac97a1c9a7af199ac2db72f85e68ceab3e38527f61
3
+ metadata.gz: e9d0d18470f4f9f7f62c286725f5b30c704e1f73fb2cb543723cfbc1e36eed4a
4
+ data.tar.gz: 6266834d04ea88468eb40d42a30c19e15774f02b322a69eb5535c6569b88fb05
5
5
  SHA512:
6
- metadata.gz: 95585d7404c4473f0822e208f4cf517752933331c2f3fbc55fdd3658b11ce8511a572dd5ae2aff83aca9c8f27482f79a461284fe6f053ab42e9477def1b40f56
7
- data.tar.gz: 5c871ea816c82b7ce03111988317c2b47a4334381902827b376d8ecf84aa220e401bd6be1c82d6ffd5632006d2abd144a2286612f123209a91d4e1f225f7680b
6
+ metadata.gz: '028821632a4c9147d86975b00f87d1ff98b1d98cd2adb419a07f551b8f6186f2ed28699b7666e6e2d2765d736df4ece5e8c1b8c51c24cb9c87ed960ba27c8a93'
7
+ data.tar.gz: bb2088f723fb1f9c0b6780fb81dafe26c0a893298a1c03108dcc14d4e4c6a3070e57543f8ea7953047e2aa75435a55ec88baffb5bd39033891d2f8617694e7c8
data/CHANGELOG.md CHANGED
@@ -1,3 +1,41 @@
1
+ # 1.0.0
2
+
3
+ The 1.0 release and a major refactor of all endpoint definitions.
4
+
5
+ ### Breaking Change
6
+ * The `user_create` endpoint now requires its arguments to match the actual Zoom API.
7
+ This is done to simplify the code and encourage consistency.
8
+ This means that instead of passing:
9
+ ```
10
+ {
11
+ action: 'create',
12
+ email: 'foo@bar.com',
13
+ type: 1,
14
+ first_name: 'Zoomie',
15
+ last_name: 'Userton',
16
+ password: 'testerino'
17
+ }
18
+ ```
19
+ You will instead have to pass:
20
+ ```
21
+ {
22
+ action: 'create',
23
+ user_info: {
24
+ email: 'foo@bar.com',
25
+ type: 1,
26
+ first_name: 'Zoomie',
27
+ last_name: 'Userton',
28
+ password: 'testerino'
29
+ }
30
+ }
31
+ ```
32
+ Zoom API reference for user creation: https://marketplace.zoom.us/docs/api-reference/zoom-api/users/usercreate
33
+
34
+ ### New features
35
+ * Greatly simplified new syntax when adding endpoints. This reduces repetition and makes it easier.
36
+ * On `user_settings_get`, permit `option` and `custom_query_fields`.
37
+ * Add `group_create` and `group_update`.
38
+
1
39
  # 0.11.0
2
40
 
3
41
  This is the first CHANGELOG entry.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- zoom_rb (0.11.0)
4
+ zoom_rb (1.0.0)
5
5
  httparty (~> 0.13)
6
6
  json (>= 1.8)
7
7
  jwt
@@ -31,17 +31,17 @@ GEM
31
31
  rubocop-performance (>= 1.3.0)
32
32
  rubocop-rails (>= 2.0.0)
33
33
  rubocop-rspec (>= 1.33.0)
34
- httparty (0.18.1)
34
+ httparty (0.20.0)
35
35
  mime-types (~> 3.0)
36
36
  multi_xml (>= 0.5.2)
37
37
  i18n (1.8.10)
38
38
  concurrent-ruby (~> 1.0)
39
39
  json (2.5.1)
40
- jwt (2.2.3)
40
+ jwt (2.3.0)
41
41
  method_source (1.0.0)
42
- mime-types (3.3.1)
42
+ mime-types (3.4.1)
43
43
  mime-types-data (~> 3.2015)
44
- mime-types-data (3.2021.0704)
44
+ mime-types-data (3.2021.1115)
45
45
  minitest (5.14.4)
46
46
  multi_xml (0.6.0)
47
47
  parallel (1.20.1)
@@ -122,4 +122,4 @@ DEPENDENCIES
122
122
  zoom_rb!
123
123
 
124
124
  BUNDLED WITH
125
- 2.2.24
125
+ 2.2.32
data/README.md CHANGED
@@ -21,8 +21,6 @@ Or install it yourself as:
21
21
  The Zoom API uses OAuth or JWT to [Authenticate](https://marketplace.zoom.us/docs/api-reference/Authentication) API request. By default, a JWT client will be used.
22
22
 
23
23
  ```ruby
24
- require 'zoom'
25
-
26
24
  Zoom.configure do |c|
27
25
  c.api_key = 'xxx'
28
26
  c.api_secret = 'xxx'
@@ -43,8 +41,6 @@ Which will result in a redirect to your app with code in the url params
43
41
  then use this code to get an access token and a refresh token.
44
42
 
45
43
  ```ruby
46
- require 'zoom'
47
-
48
44
  auth = Zoom::Client::OAuth.new(auth_code: auth_code, redirect_uri: redirect_uri, timeout: 15).auth
49
45
 
50
46
  zoom_client = Zoom::Client::OAuth.new(access_token: auth['access_token'], timeout: 15)
@@ -3,66 +3,33 @@
3
3
  module Zoom
4
4
  module Actions
5
5
  module Account
6
- def account_list(*args)
7
- params = Zoom::Params.new(Utils.extract_options!(args))
8
- params.permit(%i[page_size page_number])
9
- Utils.parse_response self.class.get('/accounts', query: params, headers: request_headers)
10
- end
6
+ extend Zoom::Actions
11
7
 
12
- def account_create(*args)
13
- params = Zoom::Params.new(Utils.extract_options!(args))
14
- params.require(%i[first_name last_name email password]).permit(options: %i[share_rc room_connectors share_mc meeting_connectors pay_mode])
15
- Utils.parse_response self.class.post('/accounts', body: params.to_json, headers: request_headers)
16
- end
8
+ get 'account_list', '/accounts',
9
+ permit: %i[page_size page_number]
17
10
 
18
- def account_get(*args)
19
- params = Zoom::Params.new(Utils.extract_options!(args))
20
- params.require(:account_id)
21
- Utils.parse_response self.class.get("/accounts/#{params[:account_id]}", headers: request_headers)
22
- end
11
+ post 'account_create', '/accounts',
12
+ require: %i[first_name last_name email password],
13
+ permit: { options: %i[share_rc room_connectors share_mc meeting_connectors pay_mode] }
23
14
 
24
- def account_delete(*args)
25
- params = Zoom::Params.new(Utils.extract_options!(args))
26
- params.require(:account_id)
27
- Utils.parse_response self.class.delete("/accounts/#{params[:account_id]}", headers: request_headers)
28
- end
15
+ get 'account_get', '/accounts/:account_id'
29
16
 
30
- def account_options_update(*args)
31
- params = Zoom::Params.new(Utils.extract_options!(args))
32
- params.require(:account_id).permit(%i[share_rc room_connectors share_mc meeting_connectors pay_mode])
33
- Utils.parse_response self.class.patch("/accounts/#{params[:account_id]}/options", body: params.except(:account_id).to_json, headers: request_headers)
34
- end
17
+ delete 'account_delete', '/accounts/:account_id'
35
18
 
36
- def account_settings_get(*args)
37
- params = Zoom::Params.new(Utils.extract_options!(args))
38
- params.require(:account_id).permit(:option)
39
- Utils.parse_response self.class.get("/accounts/#{params[:account_id]}/settings", query: params.except(:account_id), headers: request_headers)
40
- end
19
+ patch 'account_options_update', '/accounts/:account_id/options',
20
+ permit: %i[share_rc room_connectors share_mc meeting_connectors pay_mode]
41
21
 
42
- def account_settings_update(*args)
43
- params = Zoom::Params.new(Utils.extract_options!(args))
44
- params.require(:account_id).permit(:option, Zoom::Constants::Account::Settings::PERMITTED_KEYS)
45
- params.permit_value(:option, Zoom::Constants::Account::Settings::PERMITTED_OPTIONS)
46
- Utils.parse_response self.class.patch("/accounts/#{params[:account_id]}/settings", query: params.slice(:option), body: params.except(%i[account_id option]).to_json, headers: request_headers)
47
- end
22
+ get 'account_settings_get', '/accounts/:account_id/settings',
23
+ permit: :option
48
24
 
49
- def account_managed_domains(*args)
50
- params = Zoom::Params.new(Utils.extract_options!(args))
51
- params.require(:account_id)
52
- Utils.parse_response self.class.get("/accounts/#{params[:account_id]}/managed_domains", headers: request_headers)
53
- end
25
+ patch 'account_settings_update', '/accounts/:account_id/settings',
26
+ permit: [:option, Zoom::Constants::Account::Settings::PERMITTED_KEYS]
54
27
 
55
- def account_get_locked_settings(*args)
56
- params = Zoom::Params.new(Utils.extract_options!(args))
57
- params.require(:account_id)
58
- Utils.parse_response self.class.get("/accounts/#{params[:account_id]}/lock_settings", headers: request_headers)
59
- end
28
+ get 'account_managed_domains', '/accounts/:account_id/managed_domains'
60
29
 
61
- def account_trusted_domains(*args)
62
- params = Zoom::Params.new(Utils.extract_options!(args))
63
- params.require(:account_id)
64
- Utils.parse_response self.class.get("/accounts/#{params[:account_id]}/trusted_domains", headers: request_headers)
65
- end
30
+ get 'account_get_locked_settings', '/accounts/:account_id/lock_settings'
31
+
32
+ get 'account_trusted_domains', '/accounts/:account_id/trusted_domains'
66
33
  end
67
34
  end
68
35
  end
@@ -3,36 +3,39 @@
3
3
  module Zoom
4
4
  module Actions
5
5
  module Billing
6
- def billing_get(*args)
7
- params = Zoom::Params.new(Utils.extract_options!(args))
8
- params.require(:account_id)
9
- Utils.parse_response self.class.get("/accounts/#{params[:account_id]}/billing", headers: request_headers)
10
- end
6
+ extend Zoom::Actions
11
7
 
12
- def billing_update(*args)
13
- params = Zoom::Params.new(Utils.extract_options!(args))
14
- params.require(:account_id).permit(%i[first_name last_name email phone_number address apt city state zip country])
15
- Utils.parse_response self.class.patch("/accounts/#{params[:account_id]}/billing", body: params.except(:account_id).to_json, headers: request_headers)
16
- end
8
+ get 'billing_get', '/accounts/:account_id/billing'
17
9
 
18
- def billing_plans_list(*args)
19
- params = Zoom::Params.new(Utils.extract_options!(args))
20
- params.require(:account_id)
21
- Utils.parse_response self.class.get("/accounts/#{params[:account_id]}/plans", headers: request_headers)
22
- end
10
+ patch 'billing_update', '/accounts/:account_id/billing',
11
+ permit: %i[first_name last_name email phone_number address apt city state zip country]
23
12
 
24
- def billing_plans_usage(*args)
25
- params = Zoom::Params.new(Utils.extract_options!(args))
26
- params.require(:account_id)
27
- Utils.parse_response self.class.get("/accounts/#{params[:account_id]}/plans/usage", headers: request_headers)
28
- end
13
+ get 'billing_plans_list', '/accounts/:account_id/plans'
29
14
 
30
- def billing_plans_subscribe(*args)
31
- params = Zoom::Params.new(Utils.extract_options!(args))
32
- # TODO: Move to constants and do some data validation
33
- params.require(:account_id, contact: %i[first_name last_name email phone_number address city state zip country], plan_base: %i[type hosts]).permit(:plan_recording, contact: [:apt], plan_zoom_rooms: %i[type hosts], plan_room_connector: %i[type hosts], plan_large_meeting: [], plan_webinar: [], plan_audio: %i[type tollfree_countries premium_countries callout_countries ddi_numbers], plan_phone: { plan_base: %i[type hosts], plan_calling: [], plan_number: [] })
34
- Utils.parse_response self.class.post("/accounts/#{params[:account_id]}/plans", body: params.except(:account_id).to_json, headers: request_headers)
35
- end
15
+ get 'billing_plans_usage', '/accounts/:account_id/plans/usage'
16
+
17
+ post 'billing_plans_subscribe', '/accounts/:account_id/plans',
18
+ require: {
19
+ contact: %i[first_name last_name email phone_number address city state zip country],
20
+ plan_base: %i[type hosts]
21
+ },
22
+ permit: [
23
+ :plan_recording,
24
+ {
25
+ contact: %i[apt],
26
+ plan_zoom_rooms: %i[type hosts],
27
+ plan_room_connector: %i[type hosts],
28
+ plan_large_meeting: %i[type hosts],
29
+ plan_zoom_events: %i[type hosts],
30
+ plan_webinar: %i[type hosts],
31
+ plan_audio: %i[type tollfree_countries premium_countries callout_countries ddi_numbers],
32
+ plan_phone: {
33
+ plan_base: %i[type callout_countries],
34
+ plan_calling: %i[type hosts],
35
+ plan_number: %i[type hosts]
36
+ }
37
+ }
38
+ ]
36
39
  end
37
40
  end
38
- end
41
+ end
@@ -3,31 +3,20 @@
3
3
  module Zoom
4
4
  module Actions
5
5
  module Dashboard
6
- def dashboard_crc(*args)
7
- params = Zoom::Params.new(Utils.extract_options!(args))
8
- params.require(%i[from to])
9
- Utils.process_datetime_params!(%i[from to], params)
10
- Utils.parse_response self.class.get('/metrics/crc', query: params, headers: request_headers)
11
- end
6
+ extend Zoom::Actions
12
7
 
13
- def dashboard_meetings(*args)
14
- params = Zoom::Params.new(Utils.extract_options!(args))
15
- params.require(%i[from to]).permit(%i[next_page_token page_size type])
16
- Utils.process_datetime_params!(%i[from to], params)
17
- Utils.parse_response self.class.get('/metrics/meetings', query: params, headers: request_headers)
18
- end
8
+ get 'dashboard_crc', '/metrics/crc',
9
+ require: %i[from to]
19
10
 
20
- def dashboard_meeting_details(*args)
21
- params = Zoom::Params.new(Utils.extract_options!(args))
22
- params.require(:meeting_id).permit(:type)
23
- Utils.parse_response self.class.get("/metrics/meetings/#{params[:meeting_id]}", query: params.except(:meeting_id), headers: request_headers)
24
- end
11
+ get 'dashboard_meetings', '/metrics/meetings',
12
+ require: %i[from to],
13
+ permit: %i[next_page_token page_size type]
25
14
 
26
- def dashboard_meeting_participants(*args)
27
- params = Zoom::Params.new(Utils.extract_options!(args))
28
- params.require(:meeting_id).permit(%i[next_page_token page_size type])
29
- Utils.parse_response self.class.get("/metrics/meetings/#{params[:meeting_id]}/participants", query: params.except(:meeting_id), headers: request_headers)
30
- end
15
+ get 'dashboard_meeting_details', '/metrics/meetings/:meeting_id',
16
+ permit: :type
17
+
18
+ get 'dashboard_meeting_participants', '/metrics/meetings/:meeting_id/participants',
19
+ permit: %i[next_page_token page_size type]
31
20
  end
32
21
  end
33
22
  end
@@ -3,15 +3,17 @@
3
3
  module Zoom
4
4
  module Actions
5
5
  module Groups
6
- def groups_list(*_args)
7
- Utils.parse_response self.class.get('/groups', headers: request_headers)
8
- end
6
+ extend Zoom::Actions
9
7
 
10
- def groups_get(*args)
11
- params = Zoom::Params.new(Utils.extract_options!(args))
12
- params.require(:group_id)
13
- Utils.parse_response self.class.get("/groups/#{params[:group_id]}", headers: request_headers)
14
- end
8
+ get 'groups_list', '/groups'
9
+
10
+ get 'groups_get', '/groups/:group_id'
11
+
12
+ post 'group_create', '/groups',
13
+ permit: :name
14
+
15
+ patch 'group_update', '/groups/:group_id',
16
+ permit: :name
15
17
  end
16
18
  end
17
- end
19
+ end
@@ -4,35 +4,22 @@ module Zoom
4
4
  module Actions
5
5
  module IM
6
6
  module Chat
7
- def get_chat_channels(*args)
8
- params = Zoom::Params.new(Utils.extract_options!(args))
9
- params.require(:channel_id)
10
- Utils.parse_response self.class.get("/chat/channels/#{params[:channel_id]}", headers: request_headers)
11
- end
7
+ extend Zoom::Actions
12
8
 
13
- def get_chat_user_channels(*args)
14
- params = Zoom::Params.new(Utils.extract_options!(args))
15
- params.require(:user_id).permit(%i[next_page_token page_size])
16
- Utils.parse_response self.class.get("/chat/users/#{params[:user_id]}/channels", query: params.except(:user_id), headers: request_headers)
17
- end
9
+ get 'get_chat_channels', '/chat/channels/:channel_id'
10
+
11
+ get 'get_chat_user_channels', '/chat/users/:user_id/channels',
12
+ permit: %i[next_page_token page_size]
18
13
 
19
14
  # Get chat messages for a specified period.
20
- def chat_get(*args)
21
- options = Utils.extract_options!(args)
22
- Zoom::Params.new(options).require(:access_token, :session_id, :from, :to)
23
- # TODO: handle date format for `from` and `to` params
24
- # TODO: implement `next_page_token`, will be returned whenever the set of available chat history list exceeds 100. The expiration period is 30 minutes.
25
- Utils.parse_response self.class.post('/chat/get', query: options)
26
- end
15
+ # TODO: implement `next_page_token`, will be returned whenever the set of available chat history list exceeds 100. The expiration period is 30 minutes.
16
+ get 'chat_get', '/chat/get',
17
+ require: [ :access_token, :session_id, :from, :to ]
27
18
 
28
19
  # Get chat history list for a specified time period.
29
- def chat_list(*args)
30
- options = Utils.extract_options!(args)
31
- Zoom::Params.new(options).require(:access_token, :from, :to)
32
- # TODO: handle date format for `from` and `to` params
33
- # TODO: implement `next_page_token`, will be returned whenever the set of available chat history list exceeds 100. The expiration period is 30 minutes.
34
- Utils.parse_response self.class.post('/chat/list', query: options)
35
- end
20
+ # TODO: implement `next_page_token`, will be returned whenever the set of available chat history list exceeds 100. The expiration period is 30 minutes.
21
+ get 'chat_list', '/chat/list',
22
+ require: [ :access_token, :from, :to ]
36
23
  end
37
24
  end
38
25
  end
@@ -3,95 +3,62 @@
3
3
  module Zoom
4
4
  module Actions
5
5
  module Meeting
6
+ extend Zoom::Actions
7
+
6
8
  # List all the scheduled meetings on Zoom.
7
- def meeting_list(*args)
8
- params = Zoom::Params.new(Utils.extract_options!(args))
9
- params.require(:user_id).permit(%i[type page_size next_page_token page_number])
10
- Utils.parse_response self.class.get("/users/#{params[:user_id]}/meetings", query: params.except(:user_id), headers: request_headers)
11
- end
9
+ get 'meeting_list', '/users/:user_id/meetings',
10
+ permit: %i[type page_size next_page_token page_number]
12
11
 
13
12
  # Create a meeting on Zoom, return the created meeting URL
14
- def meeting_create(*args)
15
- params = Zoom::Params.new(Utils.extract_options!(args))
16
- params.require(:user_id).permit(%i[topic type start_time duration schedule_for timezone password agenda tracking_fields recurrence settings])
17
- Utils.process_datetime_params!(:start_time, params)
18
- Utils.parse_response self.class.post("/users/#{params[:user_id]}/meetings", body: params.except(:user_id).to_json, headers: request_headers)
19
- end
13
+ post 'meeting_create', '/users/:user_id/meetings',
14
+ permit: %i[
15
+ topic type start_time duration schedule_for timezone password agenda tracking_fields
16
+ recurrence settings template_id
17
+ ]
20
18
 
21
19
  # Get a meeting on Zoom via meeting ID, return the meeting info.
22
- def meeting_get(*args)
23
- params = Zoom::Params.new(Utils.extract_options!(args))
24
- params.require(:meeting_id).permit(%i[occurrence_id show_previous_occurrences])
25
- Utils.parse_response self.class.get("/meetings/#{params[:meeting_id]}", query: params.except(:meeting_id), headers: request_headers)
26
- end
20
+ get 'meeting_get', '/meetings/:meeting_id/',
21
+ permit: %i[occurrence_id show_previous_occurrences]
27
22
 
28
23
  # Update meeting info on Zoom via meeting ID.
29
- def meeting_update(*args)
30
- params = Zoom::Params.new(Utils.extract_options!(args))
31
- params.require(:meeting_id)
32
- Utils.process_datetime_params!(:start_time, params)
33
- # TODO Handle `topic` attr, Max of 300 characters.
34
- # TODO Handle `timezone` attr, refer to the id value in timezone list JSON file. like "America/Los_Angeles"
35
- # TODO Verify `password` attr, may only contain the following characters: a-z A-Z 0-9 @ - _
36
- # TODO Handle `option_audio` attr, Can be "both", "telephony", "voip".
37
- # TODO Handle `option_auto_record_type`, Can be "local", “cloud” or "none".
38
- Utils.parse_response self.class.patch("/meetings/#{params[:meeting_id]}", body: params.except(:meeting_id).to_json, headers: request_headers)
39
- end
24
+ # TODO Handle `topic` attr, Max of 300 characters.
25
+ # TODO Handle `timezone` attr, refer to the id value in timezone list JSON file. like "America/Los_Angeles"
26
+ # TODO Verify `password` attr, may only contain the following characters: a-z A-Z 0-9 @ - _
27
+ # TODO Handle `option_audio` attr, Can be "both", "telephony", "voip".
28
+ # TODO Handle `option_auto_record_type`, Can be "local", “cloud” or "none".
29
+ patch 'meeting_update', '/meetings/:meeting_id'
40
30
 
41
31
  # Delete a meeting on Zoom, return the deleted meeting ID.
42
- def meeting_delete(*args)
43
- params = Zoom::Params.new(Utils.extract_options!(args))
44
- params.require(:meeting_id)
45
- Utils.parse_response self.class.delete("/meetings/#{params[:meeting_id]}", query: params.except(:meeting_id), headers: request_headers)
46
- end
32
+ delete 'meeting_delete', '/meetings/:meeting_id'
47
33
 
48
34
  # Update a meeting's status
49
- def meeting_update_status(*args)
50
- params = Zoom::Params.new(Utils.extract_options!(args))
51
- params.require(:meeting_id).permit(:action)
52
- Utils.parse_response self.class.put("/meetings/#{params[:meeting_id]}/status", body: params.except(:meeting_id).to_json, headers: request_headers)
53
- end
35
+ put 'meeting_update_status', '/meetings/:meeting_id/status',
36
+ permit: :action
54
37
 
55
38
  # Register for a meeting.
56
- def meeting_add_registrant(*args)
57
- params = Zoom::Params.new(Utils.extract_options!(args))
58
- params.require(%i[meeting_id email first_name]).permit(%i[last_name address city country zip state phone industry org job_title purchasing_time_frame role_in_purchase_process no_of_employees comments custom_questions language occurrence_ids])
59
- Utils.parse_response self.class.post("/meetings/#{params[:meeting_id]}/registrants", query: params.slice(:occurrence_ids), body: params.except(:meeting_id).to_json, headers: request_headers)
60
- end
39
+ post 'meeting_add_registrant', '/meetings/:meeting_id/registrants',
40
+ require: %i[email first_name],
41
+ permit: %i[
42
+ last_name address city country zip state phone industry org job_title
43
+ purchasing_time_frame role_in_purchase_process no_of_employees comments custom_questions
44
+ language occurrence_ids
45
+ ]
61
46
 
62
47
  # Register for a meeting.
63
- def meeting_registrant_questions(*args)
64
- params = Zoom::Params.new(Utils.extract_options!(args))
65
- params.require(:meeting_id)
66
- Utils.parse_response self.class.patch("/meetings/#{params[:meeting_id]}/registrants/questions", body: params.except(:meeting_id).to_json, headers: request_headers)
67
- end
48
+ patch 'meeting_registrant_questions', '/meeting/:meeting_id/registrants/questions'
68
49
 
69
50
  # Retrieve ended meeting details
70
- def past_meeting_details(*args)
71
- params = Zoom::Params.new(Utils.extract_options!(args))
72
- params.require(:meeting_uuid)
73
- Utils.parse_response self.class.get("/past_meetings/#{params[:meeting_uuid]}", headers: request_headers)
74
- end
51
+ get 'past_meeting_details', '/past_meetings/:meeting_uuid'
75
52
 
76
53
  # Retrieve ended meeting participants
77
- def past_meeting_participants(*args)
78
- params = Zoom::Params.new(Utils.extract_options!(args))
79
- params.require(:meeting_uuid)
80
- Utils.parse_response self.class.get("/past_meetings/#{params[:meeting_uuid]}/participants", headers: request_headers)
81
- end
54
+ get 'past_meeting_participants', '/past_meetings/:meeting_uuid/participants'
82
55
 
83
- def livestream(*args)
84
- params = Zoom::Params.new(Utils.extract_options!(args))
85
- params.require(%i[meeting_id stream_url stream_key]).permit(:page_url)
86
- Utils.parse_response self.class.patch("/meetings/#{params[:meeting_id]}/livestream", body: params.except(:meeting_id).to_json, headers: request_headers)
87
- end
56
+ patch 'livestream', '/meetings/:meeting_id/livestream',
57
+ require: %i[stream_url stream_key],
58
+ permit: :page_url
88
59
 
89
60
  # Get a meeting on Zoom via meeting ID, return the meeting info.
90
- def meeting_invitation(*args)
91
- params = Zoom::Params.new(Utils.extract_options!(args))
92
- params.require(:meeting_id)
93
- Utils.parse_response self.class.get("/meetings/#{params[:meeting_id]}/invitation", headers: request_headers)
94
- end
61
+ get 'meeting_invitation', '/meetings/:meeting_id/invitation'
95
62
  end
96
63
  end
97
64
  end
@@ -3,25 +3,13 @@
3
3
  module Zoom
4
4
  module Actions
5
5
  module Phone
6
- def call_logs(*args)
7
- options = Zoom::Params.new(Utils.extract_options!(args))
8
- options.require(%i[user_id])
9
- response = self.class.get("/phone/users/#{options[:user_id]}/call_logs", query: options.except(:user_id), headers: request_headers)
10
- Utils.parse_response(response)
11
- end
6
+ extend Zoom::Actions
12
7
 
13
- def phone_users_list(*args)
14
- options = Zoom::Params.new(Utils.extract_options!(args))
15
- response = self.class.get("/phone/users", query: options, headers: request_headers)
16
- Utils.parse_response(response)
17
- end
8
+ get 'call_logs', '/phone/users/:user_id/call_logs'
18
9
 
19
- def call_recordings(*args)
20
- options = Zoom::Params.new(Utils.extract_options!(args))
21
- options.require(%i[user_id])
22
- response = self.class.get("/phone/users/#{options[:user_id]}/recordings", query: options.except(:user_id), headers: request_headers)
23
- Utils.parse_response(response)
24
- end
10
+ get 'phone_users_list', '/phone/users'
11
+
12
+ get 'call_recordings', '/phone/users/:user_id/recordings'
25
13
  end
26
14
  end
27
15
  end
@@ -3,40 +3,22 @@
3
3
  module Zoom
4
4
  module Actions
5
5
  module Recording
6
+ extend Zoom::Actions
7
+
6
8
  RECORDING_SETTINGS_KEYS = %i[share_recording recording_authentication
7
9
  authentication_option authentication_domains viewer_download password
8
10
  on_demand approval_type send_email_to_host show_social_share_buttons].freeze
9
11
 
10
- def recording_list(*args)
11
- options = Zoom::Params.new(Utils.extract_options!(args))
12
- options.require(:user_id)
13
- Utils.process_datetime_params!(%i[from to], options)
14
- Utils.parse_response self.class.get("/users/#{options[:user_id]}/recordings", query: options.except(:user_id), headers: request_headers)
15
- end
12
+ get 'recording_list', '/users/:user_id/recordings'
16
13
 
17
- def meeting_recording_get(*args)
18
- options = Zoom::Params.new(Utils.extract_options!(args))
19
- options.require(:meeting_id)
20
- Utils.parse_response self.class.get("/meetings/#{options[:meeting_id]}/recordings/settings", query: options.except(:meeting_id), headers: request_headers)
21
- end
14
+ get 'meeting_recording_get', '/meetings/:meeting_id/recordings/settings'
22
15
 
23
- def meeting_recording_settings_get(*args)
24
- options = Zoom::Params.new(Utils.extract_options!(args))
25
- options.require(:meeting_id)
26
- Utils.parse_response self.class.get("/meetings/#{options[:meeting_id]}/recordings/settings", query: options.except(:meeting_id), headers: request_headers)
27
- end
16
+ get 'meeting_recording_settings_get', '/meetings/:meeting_id/recordings/settings'
28
17
 
29
- def meeting_recording_settings_update(*args)
30
- options = Zoom::Params.new(Utils.extract_options!(args))
31
- options.require(:meeting_id).permit(RECORDING_SETTINGS_KEYS)
32
- Utils.parse_response self.class.patch("/meetings/#{options[:meeting_id]}/recordings/settings", body: options.except(:meeting_id).to_json, headers: request_headers)
33
- end
18
+ patch 'meeting_recording_settings_update', '/meetings/:meeting_id/recordings/settings',
19
+ permit: RECORDING_SETTINGS_KEYS
34
20
 
35
- def meeting_recording_file_delete(*args)
36
- options = Zoom::Params.new(Utils.extract_options!(args))
37
- options.require(%i[meeting_id recording_id])
38
- Utils.parse_response self.class.delete("/meetings/#{options[:meeting_id]}/recordings/#{options[:recording_id]}", query: options.except(:meeting_id, :recording_id), headers: request_headers)
39
- end
21
+ delete 'meeting_recording_file_delete', '/meetings/:meeting_id/recordings/:recording_id'
40
22
  end
41
23
  end
42
24
  end
@@ -3,28 +3,18 @@
3
3
  module Zoom
4
4
  module Actions
5
5
  module Report
6
- def daily_report(*args)
7
- params = Zoom::Params.new(Utils.extract_options!(args))
8
- params.permit(%i[year month])
9
- Utils.parse_response self.class.get('/report/daily', query: params, headers: request_headers)
10
- end
11
- def meeting_details_report(*args)
12
- params = Zoom::Params.new(Utils.extract_options!(args))
13
- params.require(:id)
14
- Utils.parse_response self.class.get("/report/meetings/#{params[:id]}", query: params.except(:id), headers: request_headers)
15
- end
6
+ extend Zoom::Actions
16
7
 
17
- def meeting_participants_report(*args)
18
- params = Zoom::Params.new(Utils.extract_options!(args))
19
- params.require(:id).permit(%i[page_size next_page_token])
20
- Utils.parse_response self.class.get("/report/meetings/#{params[:id]}/participants", query: params.except(:id), headers: request_headers)
21
- end
8
+ get 'daily_report', '/report/daily',
9
+ permit: %i[year month]
22
10
 
23
- def webinar_participants_report(*args)
24
- params = Zoom::Params.new(Utils.extract_options!(args))
25
- params.require(:id).permit(%i[page_size next_page_token])
26
- Utils.parse_response self.class.get("/report/webinars/#{params[:id]}/participants", query: params.except(:id), headers: request_headers)
27
- end
11
+ get 'meeting_details_report', '/report/meetings/:id'
12
+
13
+ get 'meeting_participants_report', '/report/meetings/:id/participants',
14
+ permit: %i[page_size next_page_token]
15
+
16
+ get 'webinar_participants_report', '/report/webinars/:id/participants',
17
+ permit: %i[page_size next_page_token]
28
18
  end
29
19
  end
30
20
  end