zoom_rb 0.8.1
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 +7 -0
- data/.circleci/config.yml +64 -0
- data/.gitignore +19 -0
- data/.ruby-version +1 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +91 -0
- data/LICENSE +22 -0
- data/Makefile +5 -0
- data/README.md +51 -0
- data/lib/zoom.rb +49 -0
- data/lib/zoom/actions/account.rb +93 -0
- data/lib/zoom/actions/group.rb +8 -0
- data/lib/zoom/actions/im/chat.rb +29 -0
- data/lib/zoom/actions/im/group.rb +10 -0
- data/lib/zoom/actions/m323_device.rb +8 -0
- data/lib/zoom/actions/meeting.rb +80 -0
- data/lib/zoom/actions/metrics.rb +29 -0
- data/lib/zoom/actions/recording.rb +35 -0
- data/lib/zoom/actions/report.rb +29 -0
- data/lib/zoom/actions/user.rb +146 -0
- data/lib/zoom/actions/webinar.rb +110 -0
- data/lib/zoom/client.rb +36 -0
- data/lib/zoom/defaults.rb +96 -0
- data/lib/zoom/error.rb +9 -0
- data/lib/zoom/interface.rb +6 -0
- data/lib/zoom/params.rb +64 -0
- data/lib/zoom/utils.rb +74 -0
- data/spec/fixtures/chat/get.json +16 -0
- data/spec/fixtures/chat/list.json +16 -0
- data/spec/fixtures/error/validation.json +10 -0
- data/spec/fixtures/mc_recording_list.json +51 -0
- data/spec/fixtures/meeting/create.json +24 -0
- data/spec/fixtures/meeting/delete.json +4 -0
- data/spec/fixtures/meeting/end.json +4 -0
- data/spec/fixtures/meeting/get.json +34 -0
- data/spec/fixtures/meeting/list.json +32 -0
- data/spec/fixtures/meeting/live.json +32 -0
- data/spec/fixtures/meeting/register.json +7 -0
- data/spec/fixtures/meeting/update.json +4 -0
- data/spec/fixtures/metrics_crc.json +105 -0
- data/spec/fixtures/metrics_meetingdetail.json +32 -0
- data/spec/fixtures/metrics_meetings.json +26 -0
- data/spec/fixtures/recording_delete.json +4 -0
- data/spec/fixtures/recording_get.json +37 -0
- data/spec/fixtures/recording_list.json +51 -0
- data/spec/fixtures/report/getaccountreport.json +23 -0
- data/spec/fixtures/report/getaudioreport.json +22 -0
- data/spec/fixtures/report/getdailyreport.json +13 -0
- data/spec/fixtures/report/getuserreport.json +24 -0
- data/spec/fixtures/report_getaccountreport.json +23 -0
- data/spec/fixtures/report_getdailyreport.json +83 -0
- data/spec/fixtures/report_getuserreport.json +24 -0
- data/spec/fixtures/user/assistant/delete.json +5 -0
- data/spec/fixtures/user/assistant/set.json +5 -0
- data/spec/fixtures/user/autocreate.json +51 -0
- data/spec/fixtures/user/autocreate2.json +51 -0
- data/spec/fixtures/user/create.json +7 -0
- data/spec/fixtures/user/custcreate.json +10 -0
- data/spec/fixtures/user/delete.json +0 -0
- data/spec/fixtures/user/get.json +23 -0
- data/spec/fixtures/user/getbyemail.json +8 -0
- data/spec/fixtures/user/list.json +23 -0
- data/spec/fixtures/user/pending.json +56 -0
- data/spec/fixtures/user/permanent_delete.json +4 -0
- data/spec/fixtures/user/update.json +0 -0
- data/spec/fixtures/webinar/create.json +29 -0
- data/spec/fixtures/webinar/delete.json +0 -0
- data/spec/fixtures/webinar/list.json +20 -0
- data/spec/fixtures/webinar/registrant/add.json +7 -0
- data/spec/fixtures/webinar/registrant/list.json +36 -0
- data/spec/fixtures/webinar/update.json +0 -0
- data/spec/fixtures/webinar_delete.json +4 -0
- data/spec/fixtures/webinar_end.json +4 -0
- data/spec/fixtures/webinar_get.json +17 -0
- data/spec/fixtures/webinar_update.json +4 -0
- data/spec/lib/zoom/actions/group/create_spec.rb +3 -0
- data/spec/lib/zoom/actions/group/delete_spec.rb +3 -0
- data/spec/lib/zoom/actions/group/edit_spec.rb +3 -0
- data/spec/lib/zoom/actions/group/get_spec.rb +3 -0
- data/spec/lib/zoom/actions/group/list_spec.rb +3 -0
- data/spec/lib/zoom/actions/group/member/add_spec.rb +3 -0
- data/spec/lib/zoom/actions/group/member/delete_spec.rb +3 -0
- data/spec/lib/zoom/actions/group/member/list_spec.rb +3 -0
- data/spec/lib/zoom/actions/im/chat/get_spec.rb +64 -0
- data/spec/lib/zoom/actions/im/chat/list_spec.rb +58 -0
- data/spec/lib/zoom/actions/im/group/create_spec.rb +3 -0
- data/spec/lib/zoom/actions/im/group/delete_spec.rb +3 -0
- data/spec/lib/zoom/actions/im/group/edit_spec.rb +3 -0
- data/spec/lib/zoom/actions/im/group/get_spec.rb +3 -0
- data/spec/lib/zoom/actions/im/group/list_spec.rb +3 -0
- data/spec/lib/zoom/actions/im/group/member/add_spec.rb +3 -0
- data/spec/lib/zoom/actions/im/group/member/delete_spec.rb +3 -0
- data/spec/lib/zoom/actions/im/group/member/list_spec.rb +3 -0
- data/spec/lib/zoom/actions/m323/device/create_spec.rb +3 -0
- data/spec/lib/zoom/actions/m323/device/delete_spec.rb +3 -0
- data/spec/lib/zoom/actions/m323/device/list_spec.rb +3 -0
- data/spec/lib/zoom/actions/m323/device/update_spec.rb +3 -0
- data/spec/lib/zoom/actions/ma/account/billing_update_spec.rb +3 -0
- data/spec/lib/zoom/actions/ma/account/create_spec.rb +3 -0
- data/spec/lib/zoom/actions/ma/account/delete_spec.rb +3 -0
- data/spec/lib/zoom/actions/ma/account/get_spec.rb +3 -0
- data/spec/lib/zoom/actions/ma/account/list_spec.rb +3 -0
- data/spec/lib/zoom/actions/ma/account/plan/add_spec.rb +0 -0
- data/spec/lib/zoom/actions/ma/account/plan/get_spec.rb +0 -0
- data/spec/lib/zoom/actions/ma/account/plan/subscribe_spec.rb +3 -0
- data/spec/lib/zoom/actions/ma/account/plan/update_spec.rb +3 -0
- data/spec/lib/zoom/actions/meeting/create_spec.rb +66 -0
- data/spec/lib/zoom/actions/meeting/delete_spec.rb +55 -0
- data/spec/lib/zoom/actions/meeting/end_spec.rb +55 -0
- data/spec/lib/zoom/actions/meeting/get_spec.rb +59 -0
- data/spec/lib/zoom/actions/meeting/list_spec.rb +48 -0
- data/spec/lib/zoom/actions/meeting/live_spec.rb +43 -0
- data/spec/lib/zoom/actions/meeting/register_spec.rb +45 -0
- data/spec/lib/zoom/actions/meeting/update_spec.rb +53 -0
- data/spec/lib/zoom/actions/metrics/crc_spec.rb +48 -0
- data/spec/lib/zoom/actions/metrics/im_spec.rb +3 -0
- data/spec/lib/zoom/actions/metrics/meetingdetail_spec.rb +51 -0
- data/spec/lib/zoom/actions/metrics/meetings_spec.rb +61 -0
- data/spec/lib/zoom/actions/metrics/qos_spec.rb +3 -0
- data/spec/lib/zoom/actions/metrics/webinardetail_spec.rb +3 -0
- data/spec/lib/zoom/actions/metrics/webinars_spec.rb +3 -0
- data/spec/lib/zoom/actions/metrics/zoomroomdetail_spec.rb +3 -0
- data/spec/lib/zoom/actions/metrics/zoomrooms_spec.rb +3 -0
- data/spec/lib/zoom/actions/recording/delete_spec.rb +52 -0
- data/spec/lib/zoom/actions/recording/get_spec.rb +66 -0
- data/spec/lib/zoom/actions/recording/list_spec.rb +51 -0
- data/spec/lib/zoom/actions/recording/mc_list_spec.rb +51 -0
- data/spec/lib/zoom/actions/report/getaccountreport_spec.rb +57 -0
- data/spec/lib/zoom/actions/report/getaudioreport_spec.rb +3 -0
- data/spec/lib/zoom/actions/report/getdailyreport_spec.rb +62 -0
- data/spec/lib/zoom/actions/report/getuserreport_spec.rb +67 -0
- data/spec/lib/zoom/actions/user/activate_spec.rb +3 -0
- data/spec/lib/zoom/actions/user/assistant/delete_spec.rb +3 -0
- data/spec/lib/zoom/actions/user/assistant/set_spec.rb +3 -0
- data/spec/lib/zoom/actions/user/autocreate2_spec.rb +59 -0
- data/spec/lib/zoom/actions/user/autocreate_spec.rb +58 -0
- data/spec/lib/zoom/actions/user/checkemail_spec.rb +3 -0
- data/spec/lib/zoom/actions/user/checkzpk_spec.rb +3 -0
- data/spec/lib/zoom/actions/user/create_spec.rb +69 -0
- data/spec/lib/zoom/actions/user/custcreate_spec.rb +59 -0
- data/spec/lib/zoom/actions/user/deactivate_spec.rb +3 -0
- data/spec/lib/zoom/actions/user/delete_spec.rb +40 -0
- data/spec/lib/zoom/actions/user/get_spec.rb +50 -0
- data/spec/lib/zoom/actions/user/getbyemail_spec.rb +54 -0
- data/spec/lib/zoom/actions/user/list_spec.rb +47 -0
- data/spec/lib/zoom/actions/user/revoketoken_spec.rb +3 -0
- data/spec/lib/zoom/actions/user/update_spec.rb +40 -0
- data/spec/lib/zoom/actions/user/updatepassword_spec.rb +3 -0
- data/spec/lib/zoom/actions/webinar/attendees_list_spec.rb +3 -0
- data/spec/lib/zoom/actions/webinar/create_spec.rb +52 -0
- data/spec/lib/zoom/actions/webinar/delete_spec.rb +40 -0
- data/spec/lib/zoom/actions/webinar/end_spec.rb +3 -0
- data/spec/lib/zoom/actions/webinar/get_spec.rb +65 -0
- data/spec/lib/zoom/actions/webinar/list_registration_spec.rb +3 -0
- data/spec/lib/zoom/actions/webinar/list_spec.rb +48 -0
- data/spec/lib/zoom/actions/webinar/panelists_spec.rb +3 -0
- data/spec/lib/zoom/actions/webinar/polls_spec.rb +3 -0
- data/spec/lib/zoom/actions/webinar/questions_spec.rb +3 -0
- data/spec/lib/zoom/actions/webinar/register_spec.rb +3 -0
- data/spec/lib/zoom/actions/webinar/registrants/add_spec.rb +60 -0
- data/spec/lib/zoom/actions/webinar/registrants/approve_spec.rb +3 -0
- data/spec/lib/zoom/actions/webinar/registrants/list_spec.rb +40 -0
- data/spec/lib/zoom/actions/webinar/registration_cancel_spec.rb +3 -0
- data/spec/lib/zoom/actions/webinar/registration_spec.rb +3 -0
- data/spec/lib/zoom/actions/webinar/update_spec.rb +40 -0
- data/spec/lib/zoom/actions/webinar/uuid_list_spec.rb +3 -0
- data/spec/lib/zoom/client_spec.rb +45 -0
- data/spec/lib/zoom/params_spec.rb +68 -0
- data/spec/lib/zoom/utils_spec.rb +73 -0
- data/spec/spec_helper.rb +35 -0
- data/zoom_rb.gemspec +29 -0
- metadata +483 -0
data/lib/zoom/client.rb
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'httparty'
|
|
4
|
+
require 'json'
|
|
5
|
+
require 'jwt'
|
|
6
|
+
|
|
7
|
+
module Zoom
|
|
8
|
+
class Client
|
|
9
|
+
include HTTParty
|
|
10
|
+
include Actions::Account
|
|
11
|
+
include Actions::Group
|
|
12
|
+
include Actions::M323Device
|
|
13
|
+
include Actions::User
|
|
14
|
+
include Actions::Meeting
|
|
15
|
+
include Actions::Metrics
|
|
16
|
+
include Actions::Webinar
|
|
17
|
+
include Actions::Report
|
|
18
|
+
include Actions::Recording
|
|
19
|
+
include Actions::IM::Chat
|
|
20
|
+
include Actions::IM::Group
|
|
21
|
+
|
|
22
|
+
base_uri 'https://api.zoom.us/v2'
|
|
23
|
+
headers 'Accept' => 'application/json'
|
|
24
|
+
headers 'Content-Type' => 'application/json'
|
|
25
|
+
|
|
26
|
+
def initialize(config)
|
|
27
|
+
Utils.require_params(%i[api_key api_secret], config)
|
|
28
|
+
config.each { |k, v| instance_variable_set("@#{k}", v) }
|
|
29
|
+
self.class.default_timeout(@timeout)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def access_token
|
|
33
|
+
JWT.encode({ iss: @api_key, exp: Time.now.to_i + @timeout }, @api_secret, 'HS256', { typ: 'JWT' })
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Zoom
|
|
4
|
+
class Defaults
|
|
5
|
+
ACCOUNT_OPTIONS_PAY_MODES = { 'Master account holder pays' => 'master', # default
|
|
6
|
+
'Sub account holder pays' => 'sub'
|
|
7
|
+
}.freeze
|
|
8
|
+
|
|
9
|
+
IM_GROUP_TYPES = { 'Only members can see the group automatically. Other people can search members in the group.' => 'normal', # default
|
|
10
|
+
'All people in the account can see the group and members automatically' => 'shared',
|
|
11
|
+
'Nobody can see the group or search members except the members in the group' => 'restricted'
|
|
12
|
+
}.freeze
|
|
13
|
+
|
|
14
|
+
RECURRENCE_TYPES = { 'Daily' => 1,
|
|
15
|
+
'Weekly' => 2,
|
|
16
|
+
'Monthly' => 3
|
|
17
|
+
}.freeze # no default
|
|
18
|
+
|
|
19
|
+
RECURRENCE_WEEKLY_DAYS = { 'Sunday' => 1,
|
|
20
|
+
'Monday' => 2,
|
|
21
|
+
'Tuesday' => 3,
|
|
22
|
+
'Wednesday' => 4,
|
|
23
|
+
'Thursday' => 5,
|
|
24
|
+
'Friday' => 6,
|
|
25
|
+
'Saturday' => 7
|
|
26
|
+
}.freeze # no default
|
|
27
|
+
|
|
28
|
+
RECURRENCE_MONTHLY_WEEKS = { 'Last week' => -1,
|
|
29
|
+
'First week' => 1,
|
|
30
|
+
'Second week' => 2,
|
|
31
|
+
'Third week' => 3,
|
|
32
|
+
'Fourth week' => 4
|
|
33
|
+
}.freeze # no default
|
|
34
|
+
|
|
35
|
+
MEETING_TYPES = { 'Instant Meeting' => 1,
|
|
36
|
+
'Scheduled Meeting' => 2, # default
|
|
37
|
+
'Recurring Meeting with no fixed time' => 3,
|
|
38
|
+
'Recurring Meeting with fixed time' => 8
|
|
39
|
+
}.freeze
|
|
40
|
+
|
|
41
|
+
MEETING_APPROVAL_TYPES = { 'Automatically Approve' => 0,
|
|
42
|
+
'Manually Approve' => 1,
|
|
43
|
+
'No Registration Required' => 2 # default
|
|
44
|
+
}.freeze
|
|
45
|
+
|
|
46
|
+
MEETING_REGISTRATION_TYPES = { 'Attendees register once and can attend any of the occurrences' => 1, # default
|
|
47
|
+
'Attendees need to register for each occurrence to attend' => 2,
|
|
48
|
+
'Attendees register once and can choose one or more occurrences to attend' => 3
|
|
49
|
+
}.freeze
|
|
50
|
+
|
|
51
|
+
MEETING_AUDIO_TYPE = { 'Both Telephony and VoIP' => 'both', # default
|
|
52
|
+
'Telephony only' => 'telephony',
|
|
53
|
+
'VoIP only' => 'voip'
|
|
54
|
+
}.freeze
|
|
55
|
+
|
|
56
|
+
MEETING_AUTO_RECORDING = { 'Record to local device' => 'local',
|
|
57
|
+
'Record to cloud' => 'cloud',
|
|
58
|
+
'No Recording' => 'none' # default
|
|
59
|
+
}.freeze
|
|
60
|
+
|
|
61
|
+
REGISTRANT_STATUS_ACTIONS = { 'Approve registrant' => 'approve',
|
|
62
|
+
'Cancel registrant' => 'cancel',
|
|
63
|
+
'Deny registrant' => 'deny'
|
|
64
|
+
}.freeze # no default
|
|
65
|
+
|
|
66
|
+
WEBINAR_TYPES = { 'Webinar' => 5, # default
|
|
67
|
+
'Recurring Webinar with no fixed time' => 6,
|
|
68
|
+
'Recurring Webinar with fixed time' => 9
|
|
69
|
+
}.freeze
|
|
70
|
+
|
|
71
|
+
WEBINAR_APPROVAL_TYPES = { 'Automatically Approve' => 0,
|
|
72
|
+
'Manually Approve' => 1,
|
|
73
|
+
'No Registration Required' => 2 # default
|
|
74
|
+
}.freeze
|
|
75
|
+
|
|
76
|
+
WEBINAR_REGISTRATION_TYPES = { 'Attendees register once and can attend any of the occurrences' => 1, # default
|
|
77
|
+
'Attendees need to register for each occurrence to attend' => 2,
|
|
78
|
+
'Attendees register once and can choose one or more occurrences to attend' => 3
|
|
79
|
+
}.freeze
|
|
80
|
+
|
|
81
|
+
WEBINAR_AUDIO_TYPE = { 'Both Telephony and VoIP' => 'both', # default
|
|
82
|
+
'Telephony only' => 'telephony',
|
|
83
|
+
'VoIP only' => 'voip'
|
|
84
|
+
}.freeze
|
|
85
|
+
|
|
86
|
+
WEBINAR_AUTO_RECORDING = { 'Record to local device' => 'local',
|
|
87
|
+
'Record to cloud' => 'cloud',
|
|
88
|
+
'No Recording' => 'none' # default
|
|
89
|
+
}.freeze
|
|
90
|
+
|
|
91
|
+
USER_TYPES = { 'basic' => 1,
|
|
92
|
+
'pro' => 2,
|
|
93
|
+
'corp' => 3
|
|
94
|
+
}.freeze # no default
|
|
95
|
+
end
|
|
96
|
+
end
|
data/lib/zoom/error.rb
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Zoom
|
|
4
|
+
class Error < StandardError; end
|
|
5
|
+
class GatewayTimeout < StandardError; end
|
|
6
|
+
class NotImplemented < StandardError; end
|
|
7
|
+
class ParameterMissing < StandardError; end
|
|
8
|
+
class ParameterNotPermitted < StandardError; end
|
|
9
|
+
end
|
data/lib/zoom/params.rb
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'pry'
|
|
3
|
+
module Zoom
|
|
4
|
+
class Params < SimpleDelegator
|
|
5
|
+
# delegate :keys, :key?, :has_key?, :values, :has_value?, :value?, :empty?,
|
|
6
|
+
# :include?, :as_json, :to_s, :each_key, to: :@parameters
|
|
7
|
+
|
|
8
|
+
def initialize(parameters = {})
|
|
9
|
+
@parameters = parameters
|
|
10
|
+
super
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def require(*keys)
|
|
15
|
+
missing_keys = find_missing_keys(keys.flatten)
|
|
16
|
+
return self.class.new(except(keys)) if missing_keys.empty?
|
|
17
|
+
raise Zoom::ParameterMissing, missing_keys.to_s
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def permit(*filters)
|
|
21
|
+
permitted_keys = filters.flatten.each_with_object([]) do |filter, array|
|
|
22
|
+
case filter
|
|
23
|
+
when Symbol, String
|
|
24
|
+
array << filter
|
|
25
|
+
when Hash
|
|
26
|
+
array << hash_filter(filter)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
non_permitted_params = @parameters.keys - permitted_keys.flatten
|
|
30
|
+
raise Zoom::ParameterNotPermitted, non_permitted_params.to_s unless non_permitted_params.empty?
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def except(*keys)
|
|
34
|
+
dup.except!(keys.flatten)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def except!(keys)
|
|
38
|
+
keys.each { |key| delete(key) }
|
|
39
|
+
self
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
EMPTY_ARRAY = [].freeze
|
|
43
|
+
EMPTY_HASH = {}.freeze
|
|
44
|
+
|
|
45
|
+
def hash_filter(filter)
|
|
46
|
+
# Slicing filters out non-declared keys.
|
|
47
|
+
slice(*filter.keys).each do |key, value|
|
|
48
|
+
next unless value
|
|
49
|
+
next unless key? key
|
|
50
|
+
next if filter[key] == EMPTY_ARRAY
|
|
51
|
+
next if filter[key] == EMPTY_HASH
|
|
52
|
+
# Declaration { user: :name } or { user: [:name, :age, { address: ... }] }.
|
|
53
|
+
self.class.new(value).permit(filter[key])
|
|
54
|
+
end
|
|
55
|
+
filter.keys
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def find_missing_keys(keys)
|
|
59
|
+
keys.each_with_object([]) do |k, array|
|
|
60
|
+
array << k if self[k].nil?
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
data/lib/zoom/utils.rb
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Zoom
|
|
4
|
+
class Utils
|
|
5
|
+
class << self
|
|
6
|
+
def argument_error(name)
|
|
7
|
+
name ? ArgumentError.new("You must provide #{name}") : ArgumentError.new
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def exclude_argument_error(name)
|
|
11
|
+
name ? ArgumentError.new("Unrecognized parameter #{name}") : ArgumentError.new
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def raise_if_error!(response)
|
|
15
|
+
if response['code'] == 300
|
|
16
|
+
error_hash = { base: response['message']}
|
|
17
|
+
raise Error, error_hash unless response['errors']
|
|
18
|
+
error_hash[response['message']] = response['errors']
|
|
19
|
+
raise Error, error_hash
|
|
20
|
+
else
|
|
21
|
+
response
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def parse_response(http_response)
|
|
26
|
+
response = http_response.parsed_response
|
|
27
|
+
response.nil? ? http_response.code : JSON.parse(response)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def require_params(params, options)
|
|
31
|
+
params = [params] unless params.is_a? Array
|
|
32
|
+
params.each do |param|
|
|
33
|
+
raise argument_error(param.to_s) unless options[param]
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def permit_params(params, options)
|
|
38
|
+
params = [params] unless params.is_a? Array
|
|
39
|
+
options.keys.each do |key|
|
|
40
|
+
raise exclude_argument_error(key.to_s) unless params.include?(key)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Dynamically defines bang methods for Actions modules
|
|
45
|
+
def define_bang_methods(klass)
|
|
46
|
+
klass.instance_methods.each do |m|
|
|
47
|
+
klass.send(:define_method, "#{m}!") do |*args|
|
|
48
|
+
response = send(m, *args)
|
|
49
|
+
Utils.raise_if_error!(response)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def extract_options!(array)
|
|
55
|
+
array.last.is_a?(::Hash) ? array.pop : {}
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def validate_password(password)
|
|
59
|
+
password_regex = /\A[a-zA-Z0-9@-_*]{0,10}\z/
|
|
60
|
+
raise(Error , 'Invalid Password') unless password[password_regex].nil?
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def process_datetime_params!(params, options)
|
|
64
|
+
params = [params] unless params.is_a? Array
|
|
65
|
+
params.each do |param|
|
|
66
|
+
if options[param] && options[param].kind_of?(Time)
|
|
67
|
+
options[param] = options[param].strftime('%FT%TZ')
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
options
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"session_id": "123456",
|
|
3
|
+
"group_name": "zoom",
|
|
4
|
+
"from": "2018-08-28",
|
|
5
|
+
"to": "2018-08-29",
|
|
6
|
+
"page_size": 30,
|
|
7
|
+
"page_count": 1,
|
|
8
|
+
"next_page_token": "",
|
|
9
|
+
"chat_messages": [
|
|
10
|
+
{
|
|
11
|
+
"message": "test1",
|
|
12
|
+
"sender": "",
|
|
13
|
+
"date_time": "2016-01-18T06:40:56Z"
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"from": "2018-08-28",
|
|
3
|
+
"to": "2018-08-29",
|
|
4
|
+
"page_size": 30,
|
|
5
|
+
"page_count": 1,
|
|
6
|
+
"next_page_token": "",
|
|
7
|
+
"chat_list": [
|
|
8
|
+
{
|
|
9
|
+
"session_id": "555",
|
|
10
|
+
"type": "Group",
|
|
11
|
+
"participants": "",
|
|
12
|
+
"group_name": "zoom test1",
|
|
13
|
+
"last_message_send_time": "2016-01-18T06:40:56Z"
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"page_count": 1,
|
|
3
|
+
"page_number": 1,
|
|
4
|
+
"page_size": 15,
|
|
5
|
+
"total_records": 1,
|
|
6
|
+
"meetings": [{
|
|
7
|
+
"uuid": "j0N0YDBYSQGB4fRv444444==",
|
|
8
|
+
"meeting_number": 7565121024,
|
|
9
|
+
"host_id": "kEFomHcIRgqxZT8D086O6A",
|
|
10
|
+
"account_id": "NyEqCEoYSNOr4jLMHoO2tA",
|
|
11
|
+
"topic": "Rcoky test recording delete",
|
|
12
|
+
"start_time": "2014-11-06T04:10:10Z",
|
|
13
|
+
"timezone": "America/Los_Angeles",
|
|
14
|
+
"duration": 999,
|
|
15
|
+
"total_size": 4324324324,
|
|
16
|
+
"recording_count": 4,
|
|
17
|
+
"recording_files": [{
|
|
18
|
+
"id": "00401415-6783-0B14-608A-34C1DD9E3041",
|
|
19
|
+
"meeting_id": "j0N0YDBYSQGB4fRv444444==",
|
|
20
|
+
"recording_start": "2014-11-06T04:14:10Z",
|
|
21
|
+
"recording_end": "2014-11-06T04:24:10Z",
|
|
22
|
+
"file_type": "M4A",
|
|
23
|
+
"file_size": 432432,
|
|
24
|
+
"play_url": "https://brand.zoom.us/recording/play/00401415-6783-0B14-608A-34C1DD9E3041"
|
|
25
|
+
}, {
|
|
26
|
+
"id": "00401415-6783-0B14-608A-34C1DD9E3042",
|
|
27
|
+
"meeting_id": "j0N0YDBYSQGB4fRv444444==",
|
|
28
|
+
"recording_start": "2014-11-06T04:25:10Z",
|
|
29
|
+
"recording_end": "2014-11-06T04:26:10Z",
|
|
30
|
+
"file_type": "MP4",
|
|
31
|
+
"file_size": 432532465,
|
|
32
|
+
"play_url": "https://brand.zoom.us/recording/play/00401415-6783-0B14-608A-34C1DD9E3042"
|
|
33
|
+
}, {
|
|
34
|
+
"id": "00401415-6783-0B14-608A-34C1DD9E3043",
|
|
35
|
+
"meeting_id": "j0N0YDBYSQGB4fRv444444==",
|
|
36
|
+
"recording_start": "2014-11-06T04:36:10Z",
|
|
37
|
+
"recording_end": "2014-11-06T04:56:10Z",
|
|
38
|
+
"file_type": "M4A",
|
|
39
|
+
"file_size": 564,
|
|
40
|
+
"file_path": "/home/cmr-ssh/replay/2015/03/27/454289936/EDB9994C-8E0D-4688-B1CE-6460F2742A10/GMT20150327-083026_test-pmem-recording.mp4"
|
|
41
|
+
}, {
|
|
42
|
+
"id": "00401415-6783-0B14-608A-34C1DD9E3044",
|
|
43
|
+
"meeting_id": "j0N0YDBYSQGB4fRv444444==",
|
|
44
|
+
"recording_start": "2014-11-06T04:56:10Z",
|
|
45
|
+
"recording_end": "2014-11-06T04:56:12Z",
|
|
46
|
+
"file_type": "MP4",
|
|
47
|
+
"file_size": 643534,
|
|
48
|
+
"file_path": "/home/cmr-ssh/replay/2015/03/27/454289936/EDB9994C-8E0D-4688-B1CE-6460F2742A10/GMT20150327-083026_test-pmem-recording.mp4"
|
|
49
|
+
}]
|
|
50
|
+
}]
|
|
51
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"uuid": "unique_id",
|
|
3
|
+
"id": "123456789",
|
|
4
|
+
"start_url": "https://zoom.us/s/123456789?zak=xxxxxx",
|
|
5
|
+
"join_url": "https://zoom.us/j/123456789",
|
|
6
|
+
"created_at": "2012-11-25T12:00:00Z",
|
|
7
|
+
"host_id": "ufR93M2pRyy8ePFN92dttq",
|
|
8
|
+
"topic": "Foo",
|
|
9
|
+
"type": 2,
|
|
10
|
+
"option_jbh": false,
|
|
11
|
+
"option_start_type": "video",
|
|
12
|
+
"start_time": "2012-11-25T12:00:00Z",
|
|
13
|
+
"duration": 30,
|
|
14
|
+
"timezone": "America/Los_Angeles",
|
|
15
|
+
"password": "123",
|
|
16
|
+
"h323_password": "123456",
|
|
17
|
+
"option_host_video": false,
|
|
18
|
+
"option_participants_video": false,
|
|
19
|
+
"option_audio": "both",
|
|
20
|
+
"option_enforce_login": false,
|
|
21
|
+
"option_enforce_login_domains ": "",
|
|
22
|
+
"option_alternative_hosts": "",
|
|
23
|
+
"status": 0
|
|
24
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"uuid": "unique_id",
|
|
3
|
+
"id": "123456789",
|
|
4
|
+
"host_id": "dh23hdu23gd",
|
|
5
|
+
"topic": "Zoom Meeting",
|
|
6
|
+
"password": "",
|
|
7
|
+
"h323_password": "",
|
|
8
|
+
"status": 0,
|
|
9
|
+
"option_jbh": false,
|
|
10
|
+
"option_start_type": "video",
|
|
11
|
+
"option_host_video": true,
|
|
12
|
+
"option_participants_video": true,
|
|
13
|
+
"option_cn_meeting": false,
|
|
14
|
+
"option_enforce_login": false,
|
|
15
|
+
"option_enforce_login_domains": "",
|
|
16
|
+
"option_in_meeting": false,
|
|
17
|
+
"option_audio": "both",
|
|
18
|
+
"option_alternative_hosts": "",
|
|
19
|
+
"option_use_pmi": false,
|
|
20
|
+
"type": 8,
|
|
21
|
+
"start_time": "2012-11-25T12:00:00Z",
|
|
22
|
+
"duration": 0,
|
|
23
|
+
"timezone": "Asia/Hong_Kong",
|
|
24
|
+
"start_url": "https://zoom.us/s/123456789?zpk=hs65q23kd9sqliy612h23k",
|
|
25
|
+
"join_url": "https://zoom.us/j/123456789",
|
|
26
|
+
"created_at": "2016-12-20T02:51:42Z",
|
|
27
|
+
"occurrences": [
|
|
28
|
+
{
|
|
29
|
+
"occurrence_id": "1483210260000",
|
|
30
|
+
"start_time": "2017-01-01T02:51:00Z",
|
|
31
|
+
"duration": 60
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|