zoom_rb 0.8.7 → 0.9.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/.ruby-version +1 -1
- data/lib/zoom.rb +1 -0
- data/lib/zoom/actions/meeting.rb +58 -47
- data/lib/zoom/actions/user.rb +8 -8
- data/lib/zoom/actions/webinar.rb +8 -8
- data/lib/zoom/client.rb +8 -0
- data/lib/zoom/version.rb +5 -0
- data/zoom_rb.gemspec +5 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 711b71ce15443f695b228ee36d51501e18b2b5132ab3b2c473d1d8300ea64720
|
4
|
+
data.tar.gz: 4f967a6b7e73adc1450d7ea51defb7380fa6c660c83922a01ba696f91950a25f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7d57f4998d48c7999a9a404688120312173d5c613a82069717ffd414dd8ad744dc1695e085436160fc7deb96350a86e689d053fea94ed6eeec0225ac77fd5ead
|
7
|
+
data.tar.gz: eff852b6a1012dd45186560406d5afeb98ae77aa8a41d43c663ca1edfde5fd2f5bced5512fea05a71b1be7f14c681fdde51824009773ec468130dda437622f3b
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.6.2
|
data/lib/zoom.rb
CHANGED
data/lib/zoom/actions/meeting.rb
CHANGED
@@ -3,75 +3,86 @@
|
|
3
3
|
module Zoom
|
4
4
|
module Actions
|
5
5
|
module Meeting
|
6
|
+
# List all the scheduled meetings on Zoom.
|
7
|
+
def meeting_list(*args)
|
8
|
+
options = Zoom::Params.new(Utils.extract_options!(args))
|
9
|
+
options.require(%i[user_id])
|
10
|
+
Utils.parse_response self.class.get("/users/#{options[:user_id]}/meetings", query: options.except(:user_id), headers: request_headers)
|
11
|
+
end
|
12
|
+
|
6
13
|
# Create a meeting on Zoom, return the created meeting URL
|
7
14
|
def meeting_create(*args)
|
8
|
-
|
9
|
-
|
10
|
-
Utils.process_datetime_params!(:start_time,
|
11
|
-
Utils.parse_response self.class.post("/users/#{
|
15
|
+
options = Zoom::Params.new(Utils.extract_options!(args))
|
16
|
+
options.require(%i[user_id])
|
17
|
+
Utils.process_datetime_params!(:start_time, options)
|
18
|
+
Utils.parse_response self.class.post("/users/#{options[:user_id]}/meetings", body: options.except(:user_id).to_json, headers: request_headers)
|
12
19
|
end
|
13
20
|
|
14
|
-
#
|
15
|
-
def
|
16
|
-
options = Utils.extract_options!(args)
|
17
|
-
|
18
|
-
Utils.parse_response self.class.
|
21
|
+
# Get a meeting on Zoom via meeting ID, return the meeting info.
|
22
|
+
def meeting_get(*args)
|
23
|
+
options = Zoom::Params.new(Utils.extract_options!(args))
|
24
|
+
options.require(%i[meeting_id])
|
25
|
+
Utils.parse_response self.class.get("/meetings/#{options[:meeting_id]}", headers: request_headers)
|
19
26
|
end
|
20
27
|
|
21
|
-
#
|
22
|
-
def
|
23
|
-
options = Utils.extract_options!(args)
|
24
|
-
|
25
|
-
Utils.
|
28
|
+
# Update meeting info on Zoom via meeting ID.
|
29
|
+
def meeting_update(*args)
|
30
|
+
options = Zoom::Params.new(Utils.extract_options!(args))
|
31
|
+
options.require(%i[meeting_id])
|
32
|
+
Utils.process_datetime_params!(:start_time, options)
|
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/#{options[:meeting_id]}", body: options.except(:meeting_id).to_json, headers: request_headers)
|
26
39
|
end
|
27
40
|
|
28
|
-
#
|
29
|
-
def
|
30
|
-
options = Utils.extract_options!(args)
|
31
|
-
|
32
|
-
Utils.parse_response self.class.
|
41
|
+
# Delete a meeting on Zoom, return the deleted meeting ID.
|
42
|
+
def meeting_delete(*args)
|
43
|
+
options = Zoom::Params.new(Utils.extract_options!(args))
|
44
|
+
options.require(%i[meeting_id])
|
45
|
+
Utils.parse_response self.class.delete("/meetings/#{options[:meeting_id]}", query: options.except(:meeting_id), headers: request_headers)
|
33
46
|
end
|
34
47
|
|
35
|
-
#
|
36
|
-
def
|
48
|
+
# Update a meeting's status
|
49
|
+
def meeting_update_status(*args)
|
50
|
+
options = Zoom::Params.new(Utils.extract_options!(args))
|
51
|
+
options.require(%i[meeting_id])
|
52
|
+
Utils.parse_response self.class.put("/meetings/#{options[:meeting_id]}/status", body: options.except(:meeting_id).to_json, headers: request_headers)
|
53
|
+
end
|
54
|
+
|
55
|
+
# End a meeting on Zoom, return the deleted meeting ID.
|
56
|
+
def meeting_end(*args)
|
37
57
|
options = Utils.extract_options!(args)
|
38
|
-
|
39
|
-
Utils.process_datetime_params!(:start_time, options)
|
40
|
-
# TODO Handle `page_size` attr, Defaults to 30. Max of 300 meetings.
|
41
|
-
# TODO Handle `page_number` attr, Defaults to 1.
|
42
|
-
Utils.parse_response self.class.post('/meeting/list', query: options)
|
58
|
+
meeting_update_status(options.merge(action: 'end'))
|
43
59
|
end
|
44
60
|
|
45
61
|
# Lists the live meetings on Zoom.
|
46
62
|
def meeting_live(*args)
|
47
63
|
options = Utils.extract_options!(args)
|
48
|
-
|
64
|
+
meeting_list(options.merge(type: 'live'))
|
49
65
|
end
|
50
66
|
|
51
67
|
# Register for a meeting.
|
52
68
|
def meeting_register(*args)
|
53
|
-
options = Utils.extract_options!(args)
|
54
|
-
|
55
|
-
|
56
|
-
# TODO Verify Purchasing Time Frame, should be "Within a month", "1-3 months", "4-6 months", "More than 6 months", "No timeframe".
|
57
|
-
# TODO Verify Role in Purchase Process, should be "Decision Maker", "Evaluator/Recommender", "Influencer", "Not involved".
|
58
|
-
# TODO Verify Number of Employees, should be "1-20", "21-50", "51-100", "101-250", "251-500", "501-1,000", "1,001-5,000", "5,001-10,000", "More than 10,000".
|
59
|
-
# TODO Verify Custom Questions, should be JSON format
|
60
|
-
# TODO Verify Language, should be "en-US", "en", "zh-CN", "zh", "en-ES", "es", “fr-FR” or "fr"
|
61
|
-
Utils.parse_response self.class.post('/meeting/register', query: options)
|
69
|
+
options = Zoom::Params.new(Utils.extract_options!(args))
|
70
|
+
options.require(%i[meeting_id email first_name last_name])
|
71
|
+
Utils.parse_response self.class.post("/meetings/#{options[:meeting_id]}/registrants", body: options.except(:meeting_id).to_json, headers: request_headers)
|
62
72
|
end
|
63
73
|
|
64
|
-
#
|
65
|
-
def
|
66
|
-
options = Utils.extract_options!(args)
|
67
|
-
|
68
|
-
Utils.
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
74
|
+
# Retrieve ended meeting details
|
75
|
+
def past_meeting_details(*args)
|
76
|
+
options = Zoom::Params.new(Utils.extract_options!(args))
|
77
|
+
options.require(%i[meeting_uuid])
|
78
|
+
Utils.parse_response self.class.get("/past_meetings/#{options[:meeting_uuid]}", headers: request_headers)
|
79
|
+
end
|
80
|
+
|
81
|
+
# Retrieve ended meeting participants
|
82
|
+
def past_meeting_participants(*args)
|
83
|
+
options = Zoom::Params.new(Utils.extract_options!(args))
|
84
|
+
options.require(%i[meeting_uuid])
|
85
|
+
Utils.parse_response self.class.get("/past_meetings/#{options[:meeting_uuid]}/participants", headers: request_headers)
|
75
86
|
end
|
76
87
|
end
|
77
88
|
end
|
data/lib/zoom/actions/user.rb
CHANGED
@@ -6,7 +6,7 @@ module Zoom
|
|
6
6
|
def user_list(*args)
|
7
7
|
params = Zoom::Params.new(Utils.extract_options!(args))
|
8
8
|
params.permit(%i[status page_size page_number])
|
9
|
-
response = self.class.get('/users', query: params
|
9
|
+
response = self.class.get('/users', query: params, headers: request_headers)
|
10
10
|
Utils.parse_response(response)
|
11
11
|
end
|
12
12
|
|
@@ -16,25 +16,25 @@ module Zoom
|
|
16
16
|
require_param_keys.append(:password) if params[:action] == 'autoCreate'
|
17
17
|
params.require(require_param_keys)
|
18
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,
|
19
|
+
Utils.parse_response self.class.post('/users', body: { action: params[:action], user_info: params.except(:action) }.to_json, headers: request_headers)
|
20
20
|
end
|
21
21
|
|
22
22
|
def user_get(*args)
|
23
23
|
params = Zoom::Params.new(Utils.extract_options!(args))
|
24
24
|
params.require(:id).permit(:login_type)
|
25
|
-
Utils.parse_response self.class.get("/users/#{params[:id]}", query: params.except(:id)
|
25
|
+
Utils.parse_response self.class.get("/users/#{params[:id]}", query: params.except(:id), headers: request_headers)
|
26
26
|
end
|
27
27
|
|
28
28
|
def user_update(*args)
|
29
29
|
params = Zoom::Params.new(Utils.extract_options!(args))
|
30
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),
|
31
|
+
Utils.parse_response self.class.patch("/users/#{params[:id]}", body: params.except(:id), headers: request_headers)
|
32
32
|
end
|
33
33
|
|
34
34
|
def user_delete(*args)
|
35
35
|
params = Zoom::Params.new(Utils.extract_options!(args))
|
36
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)
|
37
|
+
Utils.parse_response self.class.delete("/users/#{params[:id]}", query: params.except(:id), headers: request_headers)
|
38
38
|
end
|
39
39
|
|
40
40
|
def user_assistants_list(*args)
|
@@ -42,21 +42,21 @@ module Zoom
|
|
42
42
|
# TODO: implement user_assistants_list
|
43
43
|
# options = Utils.extract_options!(args)
|
44
44
|
# Utils.require_params([:user_id], options)
|
45
|
-
Utils.parse_response self.class.get("/users/#{options.slice!(:id)}/assistants", query: options
|
45
|
+
Utils.parse_response self.class.get("/users/#{options.slice!(:id)}/assistants", query: options, headers: request_headers)
|
46
46
|
end
|
47
47
|
|
48
48
|
def user_assistants_create(*args)
|
49
49
|
raise Zoom::NotImplemented, 'user_assistants_create is not yet implemented'
|
50
50
|
# TODO: validate body attributes
|
51
51
|
options = Utils.extract_options!(args)
|
52
|
-
Utils.parse_response self.class.post("/users/#{options.slice!(:id)}/assistants", body: options,
|
52
|
+
Utils.parse_response self.class.post("/users/#{options.slice!(:id)}/assistants", body: options, headers: request_headers)
|
53
53
|
end
|
54
54
|
|
55
55
|
def user_assistants_delete_all(*args)
|
56
56
|
raise Zoom::NotImplemented, 'user_assistants_delete_all is not yet implemented'
|
57
57
|
# TODO: implement user_assistants_delete_all
|
58
58
|
options = Utils.extract_options!(args)
|
59
|
-
Utils.parse_response self.class.delete("/users/#{options.slice!(:id)}/assistants", body: options,
|
59
|
+
Utils.parse_response self.class.delete("/users/#{options.slice!(:id)}/assistants", body: options, headers: request_headers)
|
60
60
|
end
|
61
61
|
|
62
62
|
def user_assistants_delete(*args)
|
data/lib/zoom/actions/webinar.rb
CHANGED
@@ -12,7 +12,7 @@ module Zoom
|
|
12
12
|
def webinar_list(*args)
|
13
13
|
params = Zoom::Params.new(Utils.extract_options!(args))
|
14
14
|
params.require(:host_id).permit(:page_size, :page_number)
|
15
|
-
Utils.parse_response self.class.get("/users/#{params[:host_id]}/webinars", query: params
|
15
|
+
Utils.parse_response self.class.get("/users/#{params[:host_id]}/webinars", query: params, headers: request_headers)
|
16
16
|
end
|
17
17
|
|
18
18
|
def webinar_create(*args)
|
@@ -23,13 +23,13 @@ module Zoom
|
|
23
23
|
settings: SETTINGS_KEYS)
|
24
24
|
# process recurrence keys based on constants
|
25
25
|
# process settings keys based on constants
|
26
|
-
Utils.parse_response self.class.post("/users/#{params[:host_id]}/webinars", body: params.except(:host_id).to_json,
|
26
|
+
Utils.parse_response self.class.post("/users/#{params[:host_id]}/webinars", body: params.except(:host_id).to_json, headers: request_headers)
|
27
27
|
end
|
28
28
|
|
29
29
|
def webinar_get(*args)
|
30
30
|
params = Zoom::Params.new(Utils.extract_options!(args))
|
31
31
|
params.require(:id)
|
32
|
-
Utils.parse_response self.class.get("/webinars/#{params[:id]}",
|
32
|
+
Utils.parse_response self.class.get("/webinars/#{params[:id]}", headers: request_headers)
|
33
33
|
end
|
34
34
|
|
35
35
|
def webinar_update(*args)
|
@@ -38,13 +38,13 @@ module Zoom
|
|
38
38
|
:timezone, :password, :agenda,
|
39
39
|
recurrence: RECURRENCE_KEYS,
|
40
40
|
settings: SETTINGS_KEYS)
|
41
|
-
Utils.parse_response self.class.patch("/webinars/#{params[:id]}", body: params.except(:id).to_json,
|
41
|
+
Utils.parse_response self.class.patch("/webinars/#{params[:id]}", body: params.except(:id).to_json, headers: request_headers)
|
42
42
|
end
|
43
43
|
|
44
44
|
def webinar_delete(*args)
|
45
45
|
params = Zoom::Params.new(Utils.extract_options!(args))
|
46
46
|
params.require(:id).permit(:occurrence_id)
|
47
|
-
Utils.parse_response self.class.delete("/webinars/#{params[:id]}", query: params.except(:id)
|
47
|
+
Utils.parse_response self.class.delete("/webinars/#{params[:id]}", query: params.except(:id), headers: request_headers)
|
48
48
|
end
|
49
49
|
|
50
50
|
def webinar_status_update(*args)
|
@@ -80,7 +80,7 @@ module Zoom
|
|
80
80
|
def webinar_registrants_list(*args)
|
81
81
|
params = Zoom::Params.new(Utils.extract_options!(args))
|
82
82
|
params.require(:id).permit(%i[occurrence_id status page_size page_number])
|
83
|
-
Utils.parse_response self.class.get("/webinars/#{params[:id]}/registrants", query: params.except(:id)
|
83
|
+
Utils.parse_response self.class.get("/webinars/#{params[:id]}/registrants", query: params.except(:id), headers: request_headers)
|
84
84
|
end
|
85
85
|
|
86
86
|
def webinar_registrant_add(*args)
|
@@ -89,14 +89,14 @@ module Zoom
|
|
89
89
|
.permit(%i[occurrence_ids address city country zip state phone
|
90
90
|
industry org job_title purchasing_time_frame role_in_purchase_process
|
91
91
|
no_of_employees comments custom_questions])
|
92
|
-
Utils.parse_response self.class.post("/webinars/#{params[:id]}/registrants", body: params.except(:id, :occurrence_ids).to_json, query: params.slice(:occurrence_ids)
|
92
|
+
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)
|
93
93
|
end
|
94
94
|
|
95
95
|
def webinar_registrants_status_update(*args)
|
96
96
|
params = Zoom::Params.new(Utils.extract_options!(args))
|
97
97
|
params.require(:id, :action)
|
98
98
|
.permit(:occurrence_id, registrants: [])
|
99
|
-
Utils.parse_response self.class.put("/webinars/#{params[:id]}/registrants/status", body: params.except(:id, :occurrence_ids).to_json, query: params.slice(:occurrence_ids)
|
99
|
+
Utils.parse_response self.class.put("/webinars/#{params[:id]}/registrants/status", body: params.except(:id, :occurrence_ids).to_json, query: params.slice(:occurrence_ids), headers: request_headers)
|
100
100
|
end
|
101
101
|
|
102
102
|
def past_webinar_list(*args)
|
data/lib/zoom/client.rb
CHANGED
@@ -29,6 +29,14 @@ module Zoom
|
|
29
29
|
self.class.default_timeout(@timeout)
|
30
30
|
end
|
31
31
|
|
32
|
+
def request_headers
|
33
|
+
{
|
34
|
+
'Accept' => 'application/json',
|
35
|
+
'Content-Type' => 'application/json',
|
36
|
+
'Authorization' => "Bearer #{access_token}"
|
37
|
+
}
|
38
|
+
end
|
39
|
+
|
32
40
|
def access_token
|
33
41
|
JWT.encode({ iss: @api_key, exp: Time.now.to_i + @timeout }, @api_secret, 'HS256', { typ: 'JWT' })
|
34
42
|
end
|
data/lib/zoom/version.rb
ADDED
data/zoom_rb.gemspec
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
lib = File.expand_path("../lib", __FILE__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
require 'zoom/version'
|
6
|
+
|
3
7
|
Gem::Specification.new do |gem|
|
4
8
|
|
5
9
|
gem.add_dependency 'httparty', '~> 0.13'
|
@@ -25,5 +29,5 @@ Gem::Specification.new do |gem|
|
|
25
29
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
26
30
|
gem.name = 'zoom_rb'
|
27
31
|
gem.require_paths = ['lib']
|
28
|
-
gem.version =
|
32
|
+
gem.version = Zoom::VERSION
|
29
33
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zoom_rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kyle Boe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-01
|
11
|
+
date: 2019-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -169,6 +169,7 @@ files:
|
|
169
169
|
- lib/zoom/interface.rb
|
170
170
|
- lib/zoom/params.rb
|
171
171
|
- lib/zoom/utils.rb
|
172
|
+
- lib/zoom/version.rb
|
172
173
|
- spec/fixtures/chat/get.json
|
173
174
|
- spec/fixtures/chat/list.json
|
174
175
|
- spec/fixtures/error/already_exists.json
|
@@ -339,8 +340,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
339
340
|
- !ruby/object:Gem::Version
|
340
341
|
version: '0'
|
341
342
|
requirements: []
|
342
|
-
|
343
|
-
rubygems_version: 2.7.6
|
343
|
+
rubygems_version: 3.0.3
|
344
344
|
signing_key:
|
345
345
|
specification_version: 4
|
346
346
|
summary: zoom.us API wrapper
|