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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +38 -0
- data/Gemfile.lock +6 -6
- data/README.md +0 -4
- data/lib/zoom/actions/account.rb +18 -51
- data/lib/zoom/actions/billing.rb +30 -27
- data/lib/zoom/actions/dashboard.rb +11 -22
- data/lib/zoom/actions/groups.rb +11 -9
- data/lib/zoom/actions/im/chat.rb +11 -24
- data/lib/zoom/actions/meeting.rb +34 -67
- data/lib/zoom/actions/phone.rb +5 -17
- data/lib/zoom/actions/recording.rb +8 -26
- data/lib/zoom/actions/report.rb +10 -20
- data/lib/zoom/actions/roles.rb +11 -28
- data/lib/zoom/actions/sip_audio.rb +16 -57
- data/lib/zoom/actions/token.rb +15 -24
- data/lib/zoom/actions/user.rb +65 -123
- data/lib/zoom/actions/webinar.rb +37 -77
- data/lib/zoom/actions.rb +49 -0
- data/lib/zoom/utils.rb +10 -7
- data/lib/zoom/version.rb +1 -1
- data/lib/zoom_rb.rb +1 -0
- data/spec/fixtures/error/admin_cannot_activated.json +4 -0
- data/spec/fixtures/error/group_not_exist.json +4 -0
- data/spec/fixtures/error/not_found_administrator.json +4 -0
- data/spec/fixtures/groups/create.json +5 -0
- data/spec/fixtures/groups/update.json +0 -0
- data/spec/fixtures/user/update_email.json +0 -0
- data/spec/fixtures/user/update_status.json +0 -0
- data/spec/lib/zoom/actions/groups/create_spec.rb +96 -1
- data/spec/lib/zoom/actions/groups/update_spec.rb +59 -0
- data/spec/lib/zoom/actions/meeting/create_spec.rb +1 -1
- data/spec/lib/zoom/actions/user/create_spec.rb +18 -46
- data/spec/lib/zoom/actions/user/update_email_spec.rb +59 -0
- data/spec/lib/zoom/actions/user/update_status_spec.rb +59 -0
- data/spec/lib/zoom/actions_spec.rb +84 -0
- data/spec/lib/zoom/utils_spec.rb +1 -1
- metadata +29 -6
data/lib/zoom/actions/roles.rb
CHANGED
@@ -3,39 +3,22 @@
|
|
3
3
|
module Zoom
|
4
4
|
module Actions
|
5
5
|
module Roles
|
6
|
-
|
7
|
-
Utils.parse_response self.class.get("/roles", headers: request_headers)
|
8
|
-
end
|
6
|
+
extend Zoom::Actions
|
9
7
|
|
10
|
-
|
11
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
12
|
-
params.require(:name).permit(%i[description privileges])
|
13
|
-
Utils.parse_response self.class.post("/roles", body: params.to_json, headers: request_headers)
|
14
|
-
end
|
8
|
+
get 'roles_list', '/roles'
|
15
9
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
Utils.parse_response self.class.get("/roles/#{params[:role_id]}/members", headers: request_headers)
|
20
|
-
end
|
10
|
+
post 'roles_create', '/roles',
|
11
|
+
require: :name,
|
12
|
+
permit: %i[description privileges]
|
21
13
|
|
22
|
-
|
23
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
24
|
-
params.require(%i[role_id members])
|
25
|
-
Utils.parse_response self.class.post("/roles/#{params[:role_id]}/members", body: params.except(:role_id).to_json, headers: request_headers)
|
26
|
-
end
|
14
|
+
get 'roles_members', '/roles/:role_id/members'
|
27
15
|
|
28
|
-
|
29
|
-
|
30
|
-
params.require(%i[role_id member_id])
|
31
|
-
Utils.parse_response self.class.delete("/roles/#{params[:role_id]}/members/#{params[:member_id]}", headers: request_headers)
|
32
|
-
end
|
16
|
+
post 'roles_assign', '/roles/:role_id/members',
|
17
|
+
require: :members
|
33
18
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
Utils.parse_response self.class.get("/roles/#{params[:role_id]}", headers: request_headers)
|
38
|
-
end
|
19
|
+
delete 'roles_unassign', '/roles/:role_id/members/:member_id'
|
20
|
+
|
21
|
+
get 'roles_get', '/roles/:role_id'
|
39
22
|
end
|
40
23
|
end
|
41
24
|
end
|
@@ -3,73 +3,32 @@
|
|
3
3
|
module Zoom
|
4
4
|
module Actions
|
5
5
|
module SipAudio
|
6
|
-
|
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]}/sip_trunk/trunks", headers: request_headers)
|
10
|
-
end
|
6
|
+
extend Zoom::Actions
|
11
7
|
|
12
|
-
|
13
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
14
|
-
params.require(:account_id, :trunk_id)
|
15
|
-
Utils.parse_response self.class.delete("/accounts/#{params[:account_id]}/sip_trunk/trunks/#{params[:trunk_id]}", headers: request_headers)
|
16
|
-
end
|
8
|
+
get 'sip_trunks_get', '/accounts/:account_id/sip_trunk/trunks'
|
17
9
|
|
18
|
-
|
19
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
20
|
-
params.require(:account_id)
|
21
|
-
Utils.parse_response self.class.delete("/accounts/#{params[:account_id]}/sip_trunk/numbers", headers: request_headers)
|
22
|
-
end
|
10
|
+
delete 'sip_trunks_delete', '/accounts/:account_id/sip_trunk/trunks/:trunk_id'
|
23
11
|
|
24
|
-
|
25
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
26
|
-
params.require(%i[account_id number_id])
|
27
|
-
Utils.parse_response self.class.delete("/accounts/#{params[:account_id]}/sip_trunk/internal_numbers/#{params[:number_id]}", headers: request_headers)
|
28
|
-
end
|
12
|
+
delete 'sip_trunk_numbers_delete', '/accounts/:account_id/sip_trunk/numbers'
|
29
13
|
|
30
|
-
|
31
|
-
|
32
|
-
params.require(%i[account_id country_id])
|
33
|
-
Utils.parse_response self.class.delete("/accounts/#{params[:account_id]}/sip_trunk/callout_countries/#{params[:country_id]}", headers: request_headers)
|
34
|
-
end
|
14
|
+
delete 'sip_trunks_internal_numbers_delete',
|
15
|
+
'/accounts/:account_id/sip_trunk/internal_numbers/:number_id'
|
35
16
|
|
36
|
-
|
37
|
-
|
38
|
-
params.require(:account_id).permit(%i[page_size next_page_token])
|
39
|
-
response = self.class.get("/accounts/#{params[:account_id]}/sip_trunk/internal_numbers", query: params, headers: request_headers)
|
40
|
-
Utils.parse_response(response)
|
41
|
-
end
|
17
|
+
delete 'sip_trunks_internal_callout_country_delete',
|
18
|
+
'/accounts/:account_id/sip_trunk/callout_countries/:country_id'
|
42
19
|
|
43
|
-
|
44
|
-
|
45
|
-
params.require(:account_id)
|
46
|
-
response = self.class.get("/accounts/#{params[:account_id]}/sip_trunk/callout_countries", headers: request_headers)
|
47
|
-
Utils.parse_response(response)
|
48
|
-
end
|
20
|
+
get 'sip_trunks_internal_numbers_list', '/accounts/:account_id/sip_trunk/internal_numbers',
|
21
|
+
permit: %i[page_size next_page_token]
|
49
22
|
|
50
|
-
|
51
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
52
|
-
response = self.class.get("/sip_trunk/numbers", headers: request_headers)
|
53
|
-
Utils.parse_response(response)
|
54
|
-
end
|
23
|
+
get 'sip_trunks_internal_callout_country_list', '/accounts/:account_id/sip_trunk/callout_countries'
|
55
24
|
|
56
|
-
|
57
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
58
|
-
params.require(:account_id)
|
59
|
-
Utils.parse_response self.class.post("/accounts/#{params[:account_id]}/sip_trunk/internal_numbers", headers: request_headers)
|
60
|
-
end
|
25
|
+
get 'sip_trunks_numbers_list', '/sip_trunk/numbers'
|
61
26
|
|
62
|
-
|
63
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
64
|
-
params.require(:account_id)
|
65
|
-
Utils.parse_response self.class.post("/accounts/#{params[:account_id]}/sip_trunk/callout_countries", headers: request_headers)
|
66
|
-
end
|
27
|
+
post 'sip_trunks_internal_numbers_add', '/accounts/:account_id/sip_trunk/internal_numbers'
|
67
28
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
Utils.parse_response self.class.post("/accounts/#{params[:account_id]}/sip_trunk/numbers", headers: request_headers)
|
72
|
-
end
|
29
|
+
post 'sip_trunks_internal_callout_countries_add', '/accounts/:account_id/sip_trunk/callout_countries'
|
30
|
+
|
31
|
+
post 'sip_trunks_numbers_assign', '/accounts/:account_id/sip_trunk/numbers'
|
73
32
|
end
|
74
33
|
end
|
75
34
|
end
|
data/lib/zoom/actions/token.rb
CHANGED
@@ -3,33 +3,24 @@
|
|
3
3
|
module Zoom
|
4
4
|
module Actions
|
5
5
|
module Token
|
6
|
-
|
7
|
-
options = Zoom::Params.new(Utils.extract_options!(args))
|
8
|
-
options.require(%i[auth_code redirect_uri])
|
9
|
-
response = self.class.post("/oauth/token?grant_type=authorization_code&code=#{options[:auth_code]}&redirect_uri=#{options[:redirect_uri]}", headers: oauth_request_headers, base_uri: 'https://zoom.us/')
|
10
|
-
Utils.parse_response(response)
|
11
|
-
end
|
6
|
+
extend Zoom::Actions
|
12
7
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
response = self.class.post("/oauth/token?grant_type=refresh_token&refresh_token=#{options[:refresh_token]}", headers: oauth_request_headers, base_uri: 'https://zoom.us/')
|
17
|
-
Utils.parse_response(response)
|
18
|
-
end
|
8
|
+
post 'access_tokens',
|
9
|
+
'/oauth/token?grant_type=authorization_code&code=:auth_code&redirect_uri=:redirect_uri',
|
10
|
+
base_uri: 'https://zoom.us/'
|
19
11
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
response = self.class.post("/oauth/data/compliance", body: options.to_json, headers: oauth_request_headers, base_uri: 'https://zoom.us/')
|
24
|
-
Utils.parse_response response
|
25
|
-
end
|
12
|
+
post 'refresh_tokens',
|
13
|
+
'/oauth/token?grant_type=refresh_token&refresh_token=:refresh_token',
|
14
|
+
base_uri: 'https://zoom.us/'
|
26
15
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
16
|
+
post 'data_compliance', '/oauth/data/compliance',
|
17
|
+
base_uri: 'https://zoom.us/',
|
18
|
+
require: %i[
|
19
|
+
client_id user_id account_id deauthorization_event_received compliance_completed
|
20
|
+
]
|
21
|
+
|
22
|
+
post 'revoke_tokens', '/oauth/revoke?token=:access_token',
|
23
|
+
base_uri: 'https://zoom.us/'
|
33
24
|
end
|
34
25
|
end
|
35
26
|
end
|
data/lib/zoom/actions/user.rb
CHANGED
@@ -3,130 +3,72 @@
|
|
3
3
|
module Zoom
|
4
4
|
module Actions
|
5
5
|
module User
|
6
|
-
|
7
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
8
|
-
params.permit(%i[status page_size role_id page_number include_fields next_page_token])
|
9
|
-
response = self.class.get('/users', query: params, headers: request_headers)
|
10
|
-
Utils.parse_response(response)
|
11
|
-
end
|
12
|
-
|
13
|
-
def user_create(*args)
|
14
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
15
|
-
require_param_keys = %i[action email type]
|
16
|
-
require_param_keys.append(:password) if params[:action] == 'autoCreate'
|
17
|
-
params.require(require_param_keys)
|
18
|
-
params.permit_value(:action, Zoom::Constants::User::CREATE_TYPES.keys)
|
19
|
-
Utils.parse_response self.class.post('/users', body: { action: params[:action], user_info: params.except(:action) }.to_json, headers: request_headers)
|
20
|
-
end
|
21
|
-
|
22
|
-
def user_get(*args)
|
23
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
24
|
-
params.require(:id).permit(:login_type)
|
25
|
-
Utils.parse_response self.class.get("/users/#{params[:id]}", query: params.except(:id), headers: request_headers)
|
26
|
-
end
|
27
|
-
|
28
|
-
def user_update(*args)
|
29
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
30
|
-
params.require(:id).permit(%i[first_name last_name type pmi timezone dept vanity_name host_key cms_user_id])
|
31
|
-
Utils.parse_response self.class.patch("/users/#{params[:id]}", body: params.except(:id), headers: request_headers)
|
32
|
-
end
|
33
|
-
|
34
|
-
def user_delete(*args)
|
35
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
36
|
-
params.require(:id).permit(%i[action transfer_email transfer_meeting transfer_webinar transfer_recording])
|
37
|
-
Utils.parse_response self.class.delete("/users/#{params[:id]}", query: params.except(:id), headers: request_headers)
|
38
|
-
end
|
39
|
-
|
40
|
-
def user_assistants_list(*args)
|
41
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
42
|
-
params.require(:user_id)
|
43
|
-
Utils.parse_response(self.class.get("/users/#{params[:user_id]}/assistants", query: params.except(:user_id), headers: request_headers))
|
44
|
-
end
|
45
|
-
|
46
|
-
def user_assistants_create(*args)
|
47
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
48
|
-
params.require(:user_id).permit(:assistants)
|
49
|
-
Utils.parse_response self.class.post("/users/#{params[:user_id]}/assistants", body: params.except(:user_id).to_json, headers: request_headers)
|
50
|
-
end
|
51
|
-
|
52
|
-
def user_assistants_delete_all(*args)
|
53
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
54
|
-
params.require(:user_id)
|
55
|
-
Utils.parse_response(self.class.delete("/users/#{params[:user_id]}/assistants", query: params.except(:user_id), headers: request_headers))
|
56
|
-
end
|
57
|
-
|
58
|
-
def user_assistants_delete(*args)
|
59
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
60
|
-
params.require(%i[user_id assistant_id])
|
61
|
-
Utils.parse_response(self.class.delete("/users/#{params[:user_id]}/assistants/#{params[:assistant_id]}", query: params.except(:user_id, :assistant_id), headers: request_headers))
|
62
|
-
end
|
63
|
-
|
64
|
-
def user_schedulers_list(*args)
|
65
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
66
|
-
params.require(:user_id)
|
67
|
-
Utils.parse_response(self.class.get("/users/#{params[:user_id]}/schedulers", query: params.except(:user_id), headers: request_headers))
|
68
|
-
end
|
69
|
-
|
70
|
-
def user_schedulers_delete_all(*args)
|
71
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
72
|
-
params.require(:user_id)
|
73
|
-
Utils.parse_response(self.class.delete("/users/#{params[:user_id]}/schedulers", query: params.except(:user_id), headers: request_headers))
|
74
|
-
end
|
75
|
-
|
76
|
-
def user_schedulers_delete(*args)
|
77
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
78
|
-
params.require(%i[user_id scheduler_id])
|
79
|
-
Utils.parse_response(self.class.delete("/users/#{params[:user_id]}/schedulers/#{params[:scheduler_id]}", query: params.except(:user_id, :scheduler_id), headers: request_headers))
|
80
|
-
end
|
81
|
-
|
82
|
-
def user_settings_get(*args)
|
83
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
84
|
-
params.require(:id).permit(:login_type)
|
85
|
-
Utils.parse_response self.class.get("/users/#{params[:id]}/settings", query: params.except(:id), headers: request_headers)
|
86
|
-
end
|
87
|
-
|
88
|
-
def user_settings_update(*args)
|
89
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
90
|
-
params.require(:id).permit(%i[schedule_meeting in_meeting email_notification recording telephony feature tsp])
|
91
|
-
Utils.parse_response self.class.patch("/users/#{params[:id]}/settings", body: params.except(:id).to_json, headers: request_headers)
|
92
|
-
end
|
93
|
-
|
94
|
-
def user_email_check(*args)
|
95
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
96
|
-
params.require(:email)
|
97
|
-
Utils.parse_response(self.class.get('/users/email', query: params.slice(:email), headers: request_headers))
|
98
|
-
end
|
99
|
-
|
100
|
-
def user_recordings_list(*args)
|
101
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
102
|
-
params.require(:id).permit(%i[page_size next_page_token mc trash from to trash_type])
|
103
|
-
Utils.parse_response self.class.get("/users/#{params[:id]}/recordings", query: params.except(:id), headers: request_headers)
|
104
|
-
end
|
105
|
-
|
106
|
-
def user_token(*args)
|
107
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
108
|
-
params.require(:user_id).permit(%i[type ttl])
|
109
|
-
Utils.parse_response self.class.get("/users/#{params[:user_id]}/token", query: params.except(:user_id), headers: request_headers)
|
110
|
-
end
|
111
|
-
|
112
|
-
def user_permissions(*args)
|
113
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
114
|
-
params.require(:user_id)
|
115
|
-
Utils.parse_response self.class.get("/users/#{params[:user_id]}/permissions", headers: request_headers)
|
116
|
-
end
|
117
|
-
|
118
|
-
def user_vanity_name(*args)
|
119
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
120
|
-
params.require(:vanity_name)
|
121
|
-
Utils.parse_response self.class.get("/users/vanity_name", query: params.slice(:vanity_name), headers: request_headers)
|
122
|
-
end
|
123
|
-
|
124
|
-
def user_password_update(*args)
|
125
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
126
|
-
params.require(:id).permit(%i[password])
|
127
|
-
Utils.parse_response self.class.patch("/users/#{params[:id]}/password", body: params.except(:id), headers: request_headers)
|
128
|
-
end
|
6
|
+
extend Zoom::Actions
|
129
7
|
|
8
|
+
get 'user_list', '/users',
|
9
|
+
permit: %i[status page_size role_id page_number include_fields next_page_token]
|
10
|
+
|
11
|
+
post 'user_create', '/users',
|
12
|
+
require: [
|
13
|
+
:action,
|
14
|
+
user_info: %i[email type]
|
15
|
+
],
|
16
|
+
permit: {
|
17
|
+
user_info: %i[first_name last_name password]
|
18
|
+
}
|
19
|
+
|
20
|
+
get 'user_get', '/users/:id',
|
21
|
+
permit: :login_type
|
22
|
+
|
23
|
+
patch 'user_update', '/users/:id',
|
24
|
+
permit: %i[first_name last_name type pmi timezone dept vanity_name host_key cms_user_id]
|
25
|
+
|
26
|
+
delete 'user_delete', '/users/:id',
|
27
|
+
permit: %i[action transfer_email transfer_meeting transfer_webinar transfer_recording]
|
28
|
+
|
29
|
+
get 'user_assistants_list', '/users/:user_id/assistants'
|
30
|
+
|
31
|
+
post 'user_assistants_create', '/users/:user_id/assistants',
|
32
|
+
permit: :assistants
|
33
|
+
|
34
|
+
delete 'user_assistants_delete_all', '/users/:user_id/assistants'
|
35
|
+
|
36
|
+
delete 'user_assistants_delete', '/users/:user_id/assistants/:assistant_id'
|
37
|
+
|
38
|
+
get 'user_schedulers_list', '/users/:user_id/schedulers'
|
39
|
+
|
40
|
+
delete 'user_schedulers_delete_all', '/users/:user_id/schedulers'
|
41
|
+
|
42
|
+
delete 'user_schedulers_delete', '/users/:user_id/schedulers/:scheduler_id'
|
43
|
+
|
44
|
+
get 'user_settings_get', '/users/:id/settings',
|
45
|
+
permit: [:login_type, :option, :custom_query_fields]
|
46
|
+
|
47
|
+
patch 'user_settings_update', '/users/:id/settings',
|
48
|
+
permit: %i[schedule_meeting in_meeting email_notification recording telephony feature tsp]
|
49
|
+
|
50
|
+
get 'user_email_check', '/users/email',
|
51
|
+
require: :email
|
52
|
+
|
53
|
+
get 'user_recordings_list', '/users/:id/recordings',
|
54
|
+
permit: %i[page_size next_page_token mc trash from to trash_type]
|
55
|
+
|
56
|
+
get 'user_token', '/users/:user_id/token',
|
57
|
+
permit: %i[type ttl]
|
58
|
+
|
59
|
+
get 'user_permissions', '/users/:user_id/permissions'
|
60
|
+
|
61
|
+
get 'user_vanity_name', '/users/vanity_name',
|
62
|
+
require: :vanity_name
|
63
|
+
|
64
|
+
patch 'user_password_update', '/users/:id/password',
|
65
|
+
permit: :password
|
66
|
+
|
67
|
+
patch 'user_email_update', '/users/:id/email',
|
68
|
+
permit: :email
|
69
|
+
|
70
|
+
patch 'user_status_update', '/users/:id/status',
|
71
|
+
permit: :status
|
130
72
|
end
|
131
73
|
end
|
132
74
|
end
|
data/lib/zoom/actions/webinar.rb
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
module Zoom
|
4
4
|
module Actions
|
5
5
|
module Webinar
|
6
|
+
extend Zoom::Actions
|
7
|
+
|
6
8
|
RECURRENCE_KEYS = %i[type repeat_interval weekly_days monthly_day monthly_week
|
7
9
|
monthly_week_day end_times end_date_time].freeze
|
8
10
|
SETTINGS_KEYS = %i[host_video panelists_video practice_session hd_video approval_type
|
@@ -14,95 +16,53 @@ module Zoom
|
|
14
16
|
post_webinar_survey survey_url registrants_email_notification
|
15
17
|
meeting_authentication authentication_option
|
16
18
|
authentication_domains registrants_confirmation_email question_answer].freeze
|
17
|
-
def webinar_list(*args)
|
18
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
19
|
-
params.require(:host_id).permit(%i[page_size page_number])
|
20
|
-
Utils.parse_response self.class.get("/users/#{params[:host_id]}/webinars", query: params.except(:host_id), headers: request_headers)
|
21
|
-
end
|
22
19
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
20
|
+
get 'webinar_list', '/users/:host_id/webinars',
|
21
|
+
permit: %i[page_size page_number]
|
22
|
+
|
23
|
+
# TODO: process recurrence keys based on constants
|
24
|
+
# TODO: process settings keys based on constants
|
25
|
+
post 'webinar_create', '/users/:host_id/webinars',
|
26
|
+
permit: [
|
27
|
+
:topic, :type, :start_time, :duration, :timezone, :password, :agenda,
|
28
|
+
{ recurrence: RECURRENCE_KEYS, settings: SETTINGS_KEYS }
|
29
|
+
]
|
33
30
|
|
34
|
-
|
35
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
36
|
-
params.require(:id)
|
37
|
-
Utils.parse_response self.class.get("/webinars/#{params[:id]}", headers: request_headers)
|
38
|
-
end
|
31
|
+
get 'webinar_get', '/webinars/:id'
|
39
32
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
settings: SETTINGS_KEYS)
|
46
|
-
Utils.parse_response self.class.patch("/webinars/#{params[:id]}", body: params.except(:id).to_json, headers: request_headers)
|
47
|
-
end
|
33
|
+
patch 'webinar_update', '/webinars/:id',
|
34
|
+
permit: [
|
35
|
+
:topic, :type, :start_time, :duration, :timezone, :password, :agenda,
|
36
|
+
{ recurrence: RECURRENCE_KEYS, settings: SETTINGS_KEYS }
|
37
|
+
]
|
48
38
|
|
49
|
-
|
50
|
-
|
51
|
-
params.require(:id).permit(:occurrence_id)
|
52
|
-
Utils.parse_response self.class.delete("/webinars/#{params[:id]}", query: params.except(:id), headers: request_headers)
|
53
|
-
end
|
39
|
+
delete 'webinar_delete', '/webinars/:id',
|
40
|
+
permit: :occurrence_id
|
54
41
|
|
55
|
-
|
56
|
-
|
57
|
-
params.require(:id).permit(%i[occurrence_id status page_size page_number])
|
58
|
-
Utils.parse_response self.class.get("/webinars/#{params[:id]}/registrants", query: params.except(:id), headers: request_headers)
|
59
|
-
end
|
42
|
+
get 'webinar_registrants_list', '/webinars/:id/registrants',
|
43
|
+
permit: %i[occurrence_id status page_size page_number]
|
60
44
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
Utils.parse_response self.class.post("/webinars/#{params[:id]}/registrants", body: params.except(:id, :occurrence_ids).to_json, query: params.slice(:occurrence_ids), headers: request_headers)
|
68
|
-
end
|
45
|
+
post 'webinar_registrant_add', '/webinars/:id/registrants',
|
46
|
+
require: %i[email first_name last_name],
|
47
|
+
permit: %i[
|
48
|
+
occurrence_ids address city country zip state phone industry org job_title
|
49
|
+
purchasing_time_frame role_in_purchase_process no_of_employees comments custom_questions
|
50
|
+
]
|
69
51
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
.permit(:occurrence_id, registrants: [])
|
74
|
-
Utils.parse_response self.class.put("/webinars/#{params[:id]}/registrants/status", body: params.except(:id, :occurrence_id).to_json, query: params.slice(:occurrence_id), headers: request_headers)
|
75
|
-
end
|
52
|
+
put 'webinar_registrants_status_update', '/webinars/:id/registrants/status',
|
53
|
+
require: :action,
|
54
|
+
permit: [ :occurrence_id, registrants: [] ]
|
76
55
|
|
77
|
-
|
78
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
79
|
-
params.require(:id)
|
80
|
-
Utils.parse_response self.class.get("/past_webinars/#{params[:id]}/instances", headers: request_headers)
|
81
|
-
end
|
56
|
+
get 'past_webinar_list', '/past_webinars/:id/instances'
|
82
57
|
|
83
|
-
|
84
|
-
|
85
|
-
params.require(%i[webinar_id id]).permit(:occurrence_id)
|
86
|
-
Utils.parse_response self.class.get("/webinars/#{params[:webinar_id]}/registrants/#{params[:id]}", query: params.except(:webinar_id, :id), headers: request_headers)
|
87
|
-
end
|
58
|
+
get 'webinar_registrant_get', '/webinars/:webinar_id/registrants/:id',
|
59
|
+
permit: :occurrence_id
|
88
60
|
|
89
|
-
|
90
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
91
|
-
params.require(:webinar_id)
|
92
|
-
Utils.parse_response self.class.get("/webinars/#{params[:webinar_id]}/polls", headers: request_headers)
|
93
|
-
end
|
61
|
+
get 'webinar_polls_list', '/webinars/:webinar_id/polls'
|
94
62
|
|
95
|
-
|
96
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
97
|
-
params.require(%i[webinar_id poll_id])
|
98
|
-
Utils.parse_response self.class.get("/webinars/#{params[:webinar_id]}/polls/#{params[:poll_id]}", headers: request_headers)
|
99
|
-
end
|
63
|
+
get 'webinar_poll_get', '/webinars/:webinar_id/polls/:poll_id'
|
100
64
|
|
101
|
-
|
102
|
-
params = Zoom::Params.new(Utils.extract_options!(args))
|
103
|
-
params.require(:webinar_id)
|
104
|
-
Utils.parse_response self.class.get("/webinars/#{params[:webinar_id]}/panelists", headers: request_headers)
|
105
|
-
end
|
65
|
+
get 'webinar_panelist_list', '/webinars/:webinar_id/panelists'
|
106
66
|
end
|
107
67
|
end
|
108
68
|
end
|
data/lib/zoom/actions.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Zoom
|
4
|
+
module Actions
|
5
|
+
def self.extract_path_keys(path)
|
6
|
+
path.scan(/:\w+/).map { |match| match[1..].to_sym }
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.parse_path(path, path_keys, params)
|
10
|
+
parsed_path = path.dup
|
11
|
+
path_keys.each do |key|
|
12
|
+
value = params[key].to_s
|
13
|
+
parsed_path = parsed_path.sub(":#{key}", value)
|
14
|
+
end
|
15
|
+
parsed_path
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.make_request(client, method, parsed_path, params, base_uri)
|
19
|
+
request_options = { headers: client.request_headers }
|
20
|
+
request_options[:base_uri] = base_uri if base_uri
|
21
|
+
case method
|
22
|
+
when :get
|
23
|
+
request_options[:query] = params
|
24
|
+
when :post, :put, :patch
|
25
|
+
request_options[:body] = params.to_json
|
26
|
+
end
|
27
|
+
client.class.public_send(method, parsed_path, **request_options)
|
28
|
+
end
|
29
|
+
|
30
|
+
[:get, :post, :patch, :put, :delete].each do |method|
|
31
|
+
define_method(method) do |name, path, options={}|
|
32
|
+
required, permitted, base_uri = options.values_at :require, :permit, :base_uri
|
33
|
+
required = Array(required) unless required.is_a?(Hash)
|
34
|
+
permitted = Array(permitted) unless permitted.is_a?(Hash)
|
35
|
+
|
36
|
+
define_method(name) do |*args|
|
37
|
+
path_keys = Zoom::Actions.extract_path_keys(path)
|
38
|
+
params = Zoom::Params.new(Utils.extract_options!(args))
|
39
|
+
parsed_path = Zoom::Actions.parse_path(path, path_keys, params)
|
40
|
+
params = params.require(path_keys) unless path_keys.empty?
|
41
|
+
params_without_required = required.empty? ? params : params.require(required)
|
42
|
+
params_without_required.permit(permitted) unless permitted.empty?
|
43
|
+
response = Zoom::Actions.make_request(self, method, parsed_path, params, base_uri)
|
44
|
+
Utils.parse_response(response)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/zoom/utils.rb
CHANGED
@@ -32,7 +32,8 @@ module Zoom
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def extract_options!(array)
|
35
|
-
array.last.is_a?(::Hash) ? array.pop : {}
|
35
|
+
params = array.last.is_a?(::Hash) ? array.pop : {}
|
36
|
+
process_datetime_params!(params)
|
36
37
|
end
|
37
38
|
|
38
39
|
def validate_password(password)
|
@@ -40,14 +41,16 @@ module Zoom
|
|
40
41
|
raise(Error , 'Invalid Password') unless password[password_regex].nil?
|
41
42
|
end
|
42
43
|
|
43
|
-
def process_datetime_params!(params
|
44
|
-
params
|
45
|
-
|
46
|
-
|
47
|
-
|
44
|
+
def process_datetime_params!(params)
|
45
|
+
params.each do |key, value|
|
46
|
+
case key
|
47
|
+
when Symbol, String
|
48
|
+
params[key] = value.is_a?(Time) ? value.strftime('%FT%TZ') : value
|
49
|
+
when Hash
|
50
|
+
process_datetime_params!(params[key])
|
48
51
|
end
|
49
52
|
end
|
50
|
-
|
53
|
+
params
|
51
54
|
end
|
52
55
|
end
|
53
56
|
end
|
data/lib/zoom/version.rb
CHANGED
data/lib/zoom_rb.rb
CHANGED