zoom_rb 0.11.0 → 1.0.0

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