zoom_rb 1.1.11 → 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 28e09abd658f1d110aab34f63837934aa36bb682f71b322ece8b97e879206a38
4
- data.tar.gz: 04e0a7efb5725a42d23b374e271a6d1b8bda24eebc00332ac0cdaec4eab90b92
3
+ metadata.gz: 36bea30bfd1a71a775dbe6331f8c2758b204a5b4f3405e45d5ff2f548ad75f28
4
+ data.tar.gz: 539d1222e50ce1c18f4585c5fabd70d21651adac7cc0d2a15a12511ba54b3da5
5
5
  SHA512:
6
- metadata.gz: 86f435e1a45e951ea6144cec9afeefafb8d637ada10d491239c7a3e6d1d132b50a9fc8175c5a606ba43a22aa05dd2bf6aba53959c0907f5ac76d5f850357f502
7
- data.tar.gz: 24175b5a35abb2eee6ff13974e9e404f8ecb99a05ce0f903cd17af2d7cdaf80345ebca85ca28ff7638f387ec39365a2f3eee5506831e83f380a7fa34877208bd
6
+ metadata.gz: c06cd7be75ddb337f0180a51dbc92c27ca37fb7623c4f00cde738826ee857455adc7e93b75ce0cb5cd420d7b2e5654b81c16570e8eb4e3460264cae27f0e0e77
7
+ data.tar.gz: c838e63febe062130e9c32a9e043464f0425eabb7910128af13ebc5f198f316b011e60d441e68f40775e4b7fd67148f65d7d0d7e72e337aafe7f27a9406b06ec
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- zoom_rb (1.1.11)
4
+ zoom_rb (1.2.0)
5
5
  httparty (>= 0.13)
6
6
  json (>= 1.8)
7
7
  jwt
@@ -17,11 +17,14 @@ GEM
17
17
  addressable (2.8.4)
18
18
  public_suffix (>= 2.0.2, < 6.0)
19
19
  ast (2.4.2)
20
+ base64 (0.2.0)
21
+ bigdecimal (3.1.8)
20
22
  byebug (11.1.3)
21
23
  coderay (1.1.3)
22
24
  concurrent-ruby (1.2.2)
23
25
  crack (0.4.5)
24
26
  rexml
27
+ csv (3.3.0)
25
28
  diff-lcs (1.5.0)
26
29
  docile (1.4.0)
27
30
  hashdiff (1.0.1)
@@ -30,17 +33,20 @@ GEM
30
33
  rubocop-performance (>= 1.3.0)
31
34
  rubocop-rails (>= 2.0.0)
32
35
  rubocop-rspec (>= 1.33.0)
33
- httparty (0.21.0)
36
+ httparty (0.22.0)
37
+ csv
34
38
  mini_mime (>= 1.0.0)
35
39
  multi_xml (>= 0.5.2)
36
40
  i18n (1.12.0)
37
41
  concurrent-ruby (~> 1.0)
38
42
  json (2.6.3)
39
- jwt (2.7.1)
43
+ jwt (2.8.1)
44
+ base64
40
45
  method_source (1.0.0)
41
46
  mini_mime (1.1.5)
42
47
  minitest (5.18.0)
43
- multi_xml (0.6.0)
48
+ multi_xml (0.7.1)
49
+ bigdecimal (~> 3.1)
44
50
  parallel (1.22.1)
45
51
  parser (3.2.2.0)
46
52
  ast (~> 2.4.1)
@@ -66,6 +66,9 @@ module Zoom
66
66
  purchasing_time_frame role_in_purchase_process no_of_employees comments custom_questions
67
67
  ]
68
68
 
69
+ delete 'webinar_registrant_delete', '/webinars/:webinar_id/registrants/:registrant_id',
70
+ permit: :occurrence_id
71
+
69
72
  put 'webinar_registrants_status_update', '/webinars/:id/registrants/status',
70
73
  require: :action,
71
74
  permit: [ :occurrence_id, registrants: [] ]
@@ -91,6 +94,9 @@ module Zoom
91
94
 
92
95
  get 'past_webinars_absentees', '/past_webinars/:webinar_uuid/absentees',
93
96
  permit: %i[occurrence_id page_size next_page_token]
97
+
98
+ get 'past_webinars_participants', '/past_webinars/:webinar_id/participants',
99
+ permit: %i[page_size next_page_token]
94
100
  end
95
101
  end
96
102
  end
data/lib/zoom/error.rb CHANGED
@@ -2,11 +2,12 @@
2
2
 
3
3
  module Zoom
4
4
  class Error < StandardError
5
- attr_reader :error_hash
5
+ attr_reader :code, :errors
6
6
 
7
- def initialize(msg, error_hash={})
8
- @error_hash = error_hash
9
- super(msg)
7
+ def initialize(message, code = nil, errors = nil)
8
+ @code = code
9
+ @errors = errors
10
+ super(message)
10
11
  end
11
12
  end
12
13
  class GatewayTimeout < Error; end
@@ -14,7 +15,6 @@ module Zoom
14
15
  class ParameterMissing < Error; end
15
16
  class ParameterNotPermitted < Error; end
16
17
  class ParameterValueNotPermitted < Error; end
17
- class AuthenticationError < Error; end
18
18
  class BadRequest < Error; end
19
19
  class Unauthorized < Error; end
20
20
  class Forbidden < Error; end
data/lib/zoom/utils.rb CHANGED
@@ -11,31 +11,34 @@ module Zoom
11
11
  name ? ArgumentError.new("Unrecognized parameter #{name}") : ArgumentError.new
12
12
  end
13
13
 
14
- def raise_if_error!(response, http_code=200)
15
- return response unless response.is_a?(Hash) && response.key?('code')
16
-
14
+ def raise_error(response, http_code=nil)
17
15
  code = response['code']
18
- error_hash = build_error(response)
19
-
20
- raise AuthenticationError, error_hash if code == 124
21
- raise BadRequest, error_hash if code == 400
22
- raise Unauthorized, error_hash if code == 401
23
- raise Forbidden, error_hash if code == 403
24
- raise NotFound, error_hash if code == 404
25
- raise Conflict, error_hash if code == 409
26
- raise TooManyRequests, error_hash if code == 429
27
- raise InternalServerError, error_hash if code == 500
28
- raise Error.new(error_hash, error_hash)
29
- end
16
+ message = response['message']
17
+ errors = response['errors']
30
18
 
31
- def build_error(response)
32
- error_hash = { base: response['message']}
33
- error_hash[response['message']] = response['errors'] if response['errors']
34
- error_hash
19
+ case http_code
20
+ when 400
21
+ raise BadRequest.new(message, code, errors)
22
+ when 401
23
+ raise Unauthorized.new(message, code, errors)
24
+ when 403
25
+ raise Forbidden.new(message, code, errors)
26
+ when 404
27
+ raise NotFound.new(message, code, errors)
28
+ when 409
29
+ raise Conflict.new(message, code, errors)
30
+ when 429
31
+ raise TooManyRequests.new(message, code, errors)
32
+ when 500
33
+ raise InternalServerError.new(message, code, errors)
34
+ else
35
+ raise Error.new(message, code, errors)
36
+ end
35
37
  end
36
38
 
37
39
  def parse_response(http_response)
38
- raise_if_error!(http_response.parsed_response, http_response.code) || http_response.code
40
+ return http_response.parsed_response || http_response.code if http_response.success?
41
+ raise_error(http_response.parsed_response, http_response.code)
39
42
  end
40
43
 
41
44
  def extract_options!(array)
data/lib/zoom/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Zoom
4
- VERSION = '1.1.11'
4
+ VERSION = '1.2.0'
5
5
  end
@@ -1,4 +1,4 @@
1
1
  {
2
- "code": 400,
3
- "message": "Unauthorized request. You do not have permission to access this users channel information."
2
+ "code": 200,
3
+ "message": "Unauthorized request. You do not have permission to access this user's channel information."
4
4
  }
@@ -0,0 +1,20 @@
1
+ {
2
+ "next_page_token": "Tva2CuIdTgsv8wAnhyAdU3m06Y2HuLQtlh3",
3
+ "page_count": 1,
4
+ "page_size": 30,
5
+ "participants": [
6
+ {
7
+ "id": "30R7kT7bTIKSNUFEuH_Qlg",
8
+ "name": "Jill Chill",
9
+ "user_id": "ABCDEF123456",
10
+ "registrant_id": "_f08HhPJS82MIVLuuFaJPg",
11
+ "user_email": "jchill@example.com",
12
+ "join_time": "2019-02-01T12:34:12.660Z",
13
+ "leave_time": "2019-02-01T12:54:12.660Z",
14
+ "duration": 20,
15
+ "failover": false,
16
+ "status": "in_meeting"
17
+ }
18
+ ],
19
+ "total_records": 1
20
+ }
@@ -36,9 +36,11 @@ describe Zoom::Actions::Groups do
36
36
  end
37
37
 
38
38
  it 'raises Zoom::Error exception with text' do
39
- expect { zc.groups_get(wrong_args) }.to raise_error(Zoom::Error, {
40
- base: 'A group with this 999999 does not exist.'
41
- }.to_s)
39
+ expect { zc.groups_get(wrong_args) }.to raise_error { |error|
40
+ expect(error).to be_a(Zoom::NotFound)
41
+ expect(error.message).to eq('A group with this 999999 does not exist.')
42
+ expect(error.code).to eq(4130)
43
+ }
42
44
  end
43
45
  end
44
46
 
@@ -53,9 +55,11 @@ describe Zoom::Actions::Groups do
53
55
  end
54
56
 
55
57
  it 'raises Zoom::Error exception with text' do
56
- expect { zc.groups_get(wrong_args) }.to raise_error(Zoom::Error, {
57
- base: 'Group does not belong to your account.'
58
- }.to_s)
58
+ expect { zc.groups_get(wrong_args) }.to raise_error { |error|
59
+ expect(error).to be_a(Zoom::BadRequest)
60
+ expect(error.message).to eq('Group does not belong to your account.')
61
+ expect(error.code).to eq(1010)
62
+ }
59
63
  end
60
64
  end
61
65
  end
@@ -38,9 +38,11 @@ describe Zoom::Actions::Groups do
38
38
  end
39
39
 
40
40
  it 'raises Zoom::Error exception with text' do
41
- expect { zc.groups_list }.to raise_error(Zoom::Error, {
42
- base: 'A group with this 999999 does not exist.'
43
- }.to_s)
41
+ expect { zc.groups_list }.to raise_error { |error|
42
+ expect(error).to be_a(Zoom::NotFound)
43
+ expect(error.message).to eq('A group with this 999999 does not exist.')
44
+ expect(error.code).to eq(4130)
45
+ }
44
46
  end
45
47
  end
46
48
  end
@@ -38,9 +38,11 @@ describe Zoom::Actions::IM::Chat do
38
38
  end
39
39
 
40
40
  it 'raises Zoom::Error exception' do
41
- expect { zc.get_chat_channels(args) }.to raise_error(Zoom::BadRequest, {
42
- base: "Unauthorized request. You do not have permission to access this user’s channel information."
43
- }.to_s)
41
+ expect { zc.get_chat_channels(args) }.to raise_error { |error|
42
+ expect(error).to be_a(Zoom::BadRequest)
43
+ expect(error.message).to eq("Unauthorized request. You do not have permission to access this user's channel information.")
44
+ expect(error.code).to eq(200)
45
+ }
44
46
  end
45
47
  end
46
48
 
@@ -55,9 +57,11 @@ describe Zoom::Actions::IM::Chat do
55
57
  end
56
58
 
57
59
  it 'returns a hash 404' do
58
- expect { zc.get_chat_channels(missed_channel_args) }.to raise_error(Zoom::Error, {
59
- base: "Channel does not exist: #{missed_channel_args[:channel_id]}"
60
- }.to_s)
60
+ expect { zc.get_chat_channels(missed_channel_args) }.to raise_error { |error|
61
+ expect(error).to be_a(Zoom::NotFound)
62
+ expect(error.message).to eq("Channel does not exist: #{missed_channel_args[:channel_id]}")
63
+ expect(error.code).to eq(4130)
64
+ }
61
65
  end
62
66
  end
63
67
  end
@@ -36,9 +36,11 @@ describe Zoom::Actions::IM::Chat do
36
36
  end
37
37
 
38
38
  it 'raises Zoom::Error exception with text' do
39
- expect { zc.get_chat_user_channels(args) }.to raise_error(Zoom::Error, {
40
- base: 'The next page token is either invalid or has expired.'
41
- }.to_s)
39
+ expect { zc.get_chat_user_channels(args) }.to raise_error { |error|
40
+ expect(error).to be_a(Zoom::BadRequest)
41
+ expect(error.message).to eq('The next page token is either invalid or has expired.')
42
+ expect(error.code).to eq(300)
43
+ }
42
44
  end
43
45
  end
44
46
  end
@@ -44,7 +44,11 @@ describe Zoom::Actions::Meeting do
44
44
  it 'raises an error' do
45
45
  expect {
46
46
  zc.meeting_update(args.merge(meeting_id: 'invalid-meeting-id'))
47
- }.to raise_error(Zoom::Error, { base: "Invalid meeting id." }.to_s)
47
+ }.to raise_error { |error|
48
+ expect(error).to be_a(Zoom::NotFound)
49
+ expect(error.message).to eq('Invalid meeting id.')
50
+ expect(error.code).to eq(300)
51
+ }
48
52
  end
49
53
  end
50
54
  end
@@ -15,7 +15,8 @@ RSpec.describe Zoom::Actions::Webinar do
15
15
  stub_request(
16
16
  :post,
17
17
  zoom_url("/users/#{args[:host_id]}/webinars")
18
- ).to_return(body: json_response('webinar', 'create'),
18
+ ).to_return(status: 201,
19
+ body: json_response('webinar', 'create'),
19
20
  headers: { 'Content-Type' => 'application/json' })
20
21
  end
21
22
 
@@ -45,7 +46,8 @@ RSpec.describe Zoom::Actions::Webinar do
45
46
  stub_request(
46
47
  :post,
47
48
  zoom_url("/users/#{args[:host_id]}/webinars")
48
- ).to_return(body: json_response('error', 'validation'),
49
+ ).to_return(status: 400,
50
+ body: json_response('error', 'validation'),
49
51
  headers: { 'Content-Type' => 'application/json' })
50
52
  end
51
53
 
@@ -12,7 +12,8 @@ RSpec.describe Zoom::Actions::Webinar do
12
12
  stub_request(
13
13
  :get,
14
14
  zoom_url("/users/#{args[:host_id]}/webinars")
15
- ).to_return(body: json_response('webinar', 'list'),
15
+ ).to_return(status: 200,
16
+ body: json_response('webinar', 'list'),
16
17
  headers: { 'Content-Type' => 'application/json' })
17
18
  end
18
19
 
@@ -38,7 +39,8 @@ RSpec.describe Zoom::Actions::Webinar do
38
39
  stub_request(
39
40
  :get,
40
41
  zoom_url("/users/#{args[:host_id]}/webinars")
41
- ).to_return(body: json_response('error', 'validation'),
42
+ ).to_return(status: 400,
43
+ body: json_response('error', 'validation'),
42
44
  headers: { 'Content-Type' => 'application/json' })
43
45
  end
44
46
 
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ describe Zoom::Actions::Webinar do
4
+ let(:zc) { zoom_client }
5
+ let(:args) { { webinar_id: '123456789' } }
6
+
7
+ describe '#past_webinars_participants' do
8
+ context 'with a valid response' do
9
+ before :each do
10
+ stub_request(
11
+ :get,
12
+ zoom_url("/past_webinars/#{args[:webinar_id]}/participants")
13
+ ).to_return(status: 200,
14
+ body: json_response('webinar', 'past_webinars_participants'),
15
+ headers: { 'Content-Type' => 'application/json' })
16
+ end
17
+
18
+ it "requires a 'webinar_id' argument" do
19
+ expect { zc.past_webinars_participants(filter_key(args, :webinar_id)) }.to raise_error(Zoom::ParameterMissing, [:webinar_id].to_s)
20
+ end
21
+
22
+ it 'returns a webinar instance with participants as an array' do
23
+ expect(zc.past_webinars_participants(args)['participants']).to be_kind_of(Array)
24
+ end
25
+ end
26
+
27
+ context 'with a 4xx response' do
28
+ before :each do
29
+ stub_request(
30
+ :get,
31
+ zoom_url("/past_webinars/#{args[:webinar_id]}/participants")
32
+ ).to_return(status: 404,
33
+ body: json_response('error', 'validation'),
34
+ headers: { 'Content-Type' => 'application/json' })
35
+ end
36
+
37
+ it 'raises Zoom::Error exception' do
38
+ expect { zc.past_webinars_participants(args) }.to raise_error(Zoom::Error)
39
+ end
40
+ end
41
+ end
42
+ end
@@ -12,7 +12,7 @@ RSpec.describe Zoom::Actions::Webinar do
12
12
  stub_request(
13
13
  :get,
14
14
  zoom_url("/webinars/#{args[:webinar_id]}/polls/#{args[:poll_id]}")
15
- ).to_return(status: :ok,
15
+ ).to_return(status: 200,
16
16
  body: json_response('webinar', 'poll_get'),
17
17
  headers: { 'Content-Type' => 'application/json' })
18
18
  end
@@ -35,7 +35,8 @@ RSpec.describe Zoom::Actions::Webinar do
35
35
  stub_request(
36
36
  :get,
37
37
  zoom_url("/webinars/#{args[:webinar_id]}/polls/#{args[:poll_id]}")
38
- ).to_return(body: json_response('error', 'validation'),
38
+ ).to_return(status: 400,
39
+ body: json_response('error', 'validation'),
39
40
  headers: { 'Content-Type' => 'application/json' })
40
41
  end
41
42
 
@@ -12,7 +12,7 @@ describe Zoom::Actions::Webinar do
12
12
  stub_request(
13
13
  :get,
14
14
  zoom_url("/webinars/#{args[:webinar_id]}/polls")
15
- ).to_return(status: :ok,
15
+ ).to_return(status: 200,
16
16
  body: json_response('webinar', 'polls_list'),
17
17
  headers: { 'Content-Type' => 'application/json' })
18
18
  end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Zoom::Actions::Webinar do
6
+ let(:zc) { zoom_client }
7
+ let(:args) { { webinar_id: 1, registrant_id: 'abcdef' } }
8
+
9
+ describe '#webinar_registrant_delete action' do
10
+ before :each do
11
+ stub_request(
12
+ :delete,
13
+ zoom_url("/webinars/#{args[:webinar_id]}/registrants/#{args[:registrant_id]}")
14
+ ).to_return(status: 204, headers: { 'Content-Type' => 'application/json' })
15
+ end
16
+
17
+ it "requires a 'webinar_id' and 'registrant_id' argument" do
18
+ expect {
19
+ zc.webinar_registrant_delete(filter_key(args, :webinar_id))
20
+ }.to raise_error(Zoom::ParameterMissing)
21
+ expect {
22
+ zc.webinar_registrant_delete(filter_key(args, :registrant_id))
23
+ }.to raise_error(Zoom::ParameterMissing)
24
+ end
25
+
26
+ it 'returns a status code of 204' do
27
+ expect(zc.webinar_registrant_delete(args)).to eq(204)
28
+ end
29
+ end
30
+ end
@@ -14,60 +14,77 @@ describe Zoom::Utils do
14
14
  end
15
15
  end
16
16
 
17
- describe '#raise_if_error!' do
18
- it 'raises Zoom::AuthenticationError if error is present and code = 124' do
19
- response = { 'code' => 124, 'message' => 'Authentication error.' }
20
- expect { Utils.raise_if_error!(response) }.to raise_error(Zoom::AuthenticationError)
17
+ describe '#raise_error' do
18
+ it 'raises Zoom::BadRequest if error is present and http code = 400' do
19
+ response = { 'code' => 123, 'message' => 'Bad request.' }
20
+ expect { Utils.raise_error(response, 400) }.to raise_error(Zoom::BadRequest)
21
21
  end
22
22
 
23
- it 'raises Zoom::BadRequest if error is present and code = 400' do
24
- response = { 'code' => 400, 'message' => 'Bas request.' }
25
- expect { Utils.raise_if_error!(response) }.to raise_error(Zoom::BadRequest)
23
+ it 'raises Zoom::Unauthorized if error is present and http code = 401' do
24
+ response = { 'code' => 123, 'message' => 'Unauthorized.' }
25
+ expect { Utils.raise_error(response, 401) }.to raise_error(Zoom::Unauthorized)
26
26
  end
27
27
 
28
- it 'raises Zoom::Unauthorized if error is present and code = 401' do
29
- response = { 'code' => 401, 'message' => 'Unauthorized.' }
30
- expect { Utils.raise_if_error!(response) }.to raise_error(Zoom::Unauthorized)
28
+ it 'raises Zoom::Forbidden if error is present and http code = 403' do
29
+ response = { 'code' => 123, 'message' => 'Forbidden.' }
30
+ expect { Utils.raise_error(response, 403) }.to raise_error(Zoom::Forbidden)
31
31
  end
32
32
 
33
- it 'raises Zoom::Forbidden if error is present and code = 403' do
34
- response = { 'code' => 403, 'message' => 'Forbidden.' }
35
- expect { Utils.raise_if_error!(response) }.to raise_error(Zoom::Forbidden)
33
+ it 'raises Zoom::NotFound if error is present and http code = 404' do
34
+ response = { 'code' => 123, 'message' => 'NotFound.' }
35
+ expect { Utils.raise_error(response, 404) }.to raise_error(Zoom::NotFound)
36
36
  end
37
37
 
38
- it 'raises Zoom::NotFound if error is present and code = 404' do
39
- response = { 'code' => 404, 'message' => 'NotFound.' }
40
- expect { Utils.raise_if_error!(response) }.to raise_error(Zoom::NotFound)
38
+ it 'raises Zoom::Conflict if error is present and http code = 409' do
39
+ response = { 'code' => 123, 'message' => 'Conflict.' }
40
+ expect { Utils.raise_error(response, 409) }.to raise_error(Zoom::Conflict)
41
41
  end
42
42
 
43
- it 'raises Zoom::Conflict if error is present and code = 409' do
44
- response = { 'code' => 409, 'message' => 'Conflict.' }
45
- expect { Utils.raise_if_error!(response) }.to raise_error(Zoom::Conflict)
43
+ it 'raises Zoom::TooManyRequests if error is present and http code = 429' do
44
+ response = { 'code' => 123, 'message' => 'Too many requests.' }
45
+ expect { Utils.raise_error(response, 429) }.to raise_error(Zoom::TooManyRequests)
46
46
  end
47
47
 
48
- it 'raises Zoom::TooManyRequests if error is present and code = 429' do
49
- response = { 'code' => 429, 'message' => 'Too many requests.' }
50
- expect { Utils.raise_if_error!(response) }.to raise_error(Zoom::TooManyRequests)
48
+ it 'raises Zoom::InternalServerError if error is present and http code = 500' do
49
+ response = { 'code' => 123, 'message' => 'Internal server error.' }
50
+ expect { Utils.raise_error(response, 500) }.to raise_error(Zoom::InternalServerError)
51
51
  end
52
52
 
53
- it 'raises Zoom::InternalServerError if error is present and code = 500' do
54
- response = { 'code' => 500, 'message' => 'Internal server error.' }
55
- expect { Utils.raise_if_error!(response) }.to raise_error(Zoom::InternalServerError)
53
+ it 'raises Zoom::Error if http code is not in [400, 401, 403, 404, 429, 500]' do
54
+ response = { 'code' => 180, 'message' => 'lol error' }
55
+ expect { Utils.raise_error(response, 101) }.to raise_error(Zoom::Error)
56
56
  end
57
57
 
58
- it 'does not raise Zoom::Error if error is not present' do
59
- response = {}
60
- expect { Utils.raise_if_error!(response) }.to_not raise_error
58
+ it 'raises Zoom::Error if http code is not in [400, 401, 403, 404, 429, 500]' do
59
+ response = { 'code' => 180, 'message' => 'lol error' }
60
+ expect { Utils.raise_error(response, 101) }.to raise_error(Zoom::Error)
61
61
  end
62
62
 
63
- it 'does not raise Zoom::Error if response is not a Hash' do
64
- response = 'xxx'
65
- expect { Utils.raise_if_error!(response) }.to_not raise_error
63
+ it 'extracts error attributes from response' do
64
+ response = json_response('error', 'validation')
65
+ expect { Utils.raise_error(response, 400) }.to raise_error { |error|
66
+ expect(error.message).to eq(response['message'])
67
+ expect(error.code).to eq(response['code'])
68
+ expect(error.errors).to eq(response['errors'])
69
+ }
66
70
  end
71
+ end
67
72
 
68
- it 'raises Zoom::Error if http code is not in [124, 400, 401, 403, 404, 429, 500]' do
69
- response = { 'code' => 180, 'message' => 'lol error' }
70
- expect { Utils.raise_if_error!(response, 400) }.to raise_error(Zoom::Error)
73
+ describe '#parse_response' do
74
+ it 'returns response if http response is successful' do
75
+ parsed_response = json_response('account', 'get')
76
+ response = double('Response', success?: true, parsed_response: parsed_response, code: 200)
77
+ expect(Utils.parse_response(response)).to eq(parsed_response)
78
+ end
79
+
80
+ it 'returns http status code if http response is successful and parsed response is nil' do
81
+ response = double('Response', success?: true, parsed_response: nil, code: 200)
82
+ expect(Utils.parse_response(response)).to eq(200)
83
+ end
84
+
85
+ it 'does not raise Zoom::Error if response is not a Hash' do
86
+ response = double('Response', success?: true, parsed_response: 'xxx', code: 200)
87
+ expect { Utils.parse_response(response) }.to_not raise_error
71
88
  end
72
89
  end
73
90
 
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: 1.1.11
4
+ version: 1.2.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: 2024-03-25 00:00:00.000000000 Z
11
+ date: 2024-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -321,6 +321,7 @@ files:
321
321
  - spec/fixtures/webinar/panelist_list.json
322
322
  - spec/fixtures/webinar/past_webinar_list.json
323
323
  - spec/fixtures/webinar/past_webinars_absentees.json
324
+ - spec/fixtures/webinar/past_webinars_participants.json
324
325
  - spec/fixtures/webinar/poll_get.json
325
326
  - spec/fixtures/webinar/polls_list.json
326
327
  - spec/fixtures/webinar/registrant/add.json
@@ -468,11 +469,13 @@ files:
468
469
  - spec/lib/zoom/actions/webinar/panelists_delete_all_spec.rb
469
470
  - spec/lib/zoom/actions/webinar/past_webinar_absentees_spec.rb
470
471
  - spec/lib/zoom/actions/webinar/past_webinar_list_spec.rb
472
+ - spec/lib/zoom/actions/webinar/past_webinar_participants_spec.rb
471
473
  - spec/lib/zoom/actions/webinar/poll_get_spec.rb
472
474
  - spec/lib/zoom/actions/webinar/polls_list_spec.rb
473
475
  - spec/lib/zoom/actions/webinar/questions_spec.rb
474
476
  - spec/lib/zoom/actions/webinar/register_spec.rb
475
477
  - spec/lib/zoom/actions/webinar/registrants/add_spec.rb
478
+ - spec/lib/zoom/actions/webinar/registrants/delete_spec.rb
476
479
  - spec/lib/zoom/actions/webinar/registrants/get_spec.rb
477
480
  - spec/lib/zoom/actions/webinar/registrants/list_spec.rb
478
481
  - spec/lib/zoom/actions/webinar/registrants/update_status_spec.rb
@@ -621,6 +624,7 @@ test_files:
621
624
  - spec/fixtures/webinar/panelist_list.json
622
625
  - spec/fixtures/webinar/past_webinar_list.json
623
626
  - spec/fixtures/webinar/past_webinars_absentees.json
627
+ - spec/fixtures/webinar/past_webinars_participants.json
624
628
  - spec/fixtures/webinar/poll_get.json
625
629
  - spec/fixtures/webinar/polls_list.json
626
630
  - spec/fixtures/webinar/registrant/add.json
@@ -768,11 +772,13 @@ test_files:
768
772
  - spec/lib/zoom/actions/webinar/panelists_delete_all_spec.rb
769
773
  - spec/lib/zoom/actions/webinar/past_webinar_absentees_spec.rb
770
774
  - spec/lib/zoom/actions/webinar/past_webinar_list_spec.rb
775
+ - spec/lib/zoom/actions/webinar/past_webinar_participants_spec.rb
771
776
  - spec/lib/zoom/actions/webinar/poll_get_spec.rb
772
777
  - spec/lib/zoom/actions/webinar/polls_list_spec.rb
773
778
  - spec/lib/zoom/actions/webinar/questions_spec.rb
774
779
  - spec/lib/zoom/actions/webinar/register_spec.rb
775
780
  - spec/lib/zoom/actions/webinar/registrants/add_spec.rb
781
+ - spec/lib/zoom/actions/webinar/registrants/delete_spec.rb
776
782
  - spec/lib/zoom/actions/webinar/registrants/get_spec.rb
777
783
  - spec/lib/zoom/actions/webinar/registrants/list_spec.rb
778
784
  - spec/lib/zoom/actions/webinar/registrants/update_status_spec.rb