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.
- 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