go_to_webinar 0.1.8 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 136217a3a77ef551798b55f54000561d146d6e8f17e2b6ffa1f6e3719d55a64b
4
- data.tar.gz: b49329c4a3d2d7e5f1f2d81a884c8dc30d3f97aebf75167088d16bd860745f09
3
+ metadata.gz: 0a2265519e8d2f5d9d9b9ce7fcc5207cb54579f4628b3f7c38fe3cfa5eaabe56
4
+ data.tar.gz: a0c2b5c34ba0e70aa5fed593120f36b70adef980d3eb6dffb07d371b4dd313cb
5
5
  SHA512:
6
- metadata.gz: 3a2d38999de7195ea845e1ea94c53dd6f0911238b74bc62b40d2b2b5d728cfbfee36db1cccbb557bd63176db776251ca68d7a6cb8d45528a36d4fc3e39cf89b6
7
- data.tar.gz: adbd478ee539827cdb1596e4b811da9b963e60d3e3933bbf21c5eaa55227d8362cb116cd5559e15ad8247b3818b31ca1646398b49633d7d11d9c76a76c48e20e
6
+ metadata.gz: d818d064acb6f3dd0c30d105d337e15f97369a038fcb60f5b586f32f6168575f60b56997ec986f6813231efbd52d447ac9d547f57011e92e201f222df9191b56
7
+ data.tar.gz: 276a3365cf9e87581045d976b8b094c81684fe79eb69e7843a444b061fcefc961d259c5a26e490fbce53dc6473bf2cbfa48f069be9981c77f99dccc2842ba979
@@ -23,6 +23,8 @@ Gem::Specification.new do |spec|
23
23
  spec.require_paths = ['lib']
24
24
 
25
25
  spec.add_dependency 'rest-client','~> 2.0'
26
+ spec.add_dependency 'oauth2', '~> 1.4.4'
27
+ spec.add_dependency 'redis', '~> 4.0'
26
28
 
27
29
  spec.add_development_dependency 'bundler', '~> 2.1.4'
28
30
  spec.add_development_dependency 'rake', '~> 10.0'
data/lib/go_to_webinar.rb CHANGED
@@ -1,11 +1,12 @@
1
1
  require 'rest-client'
2
2
  require 'json'
3
- require 'go_to_webinar/version'
4
3
  require 'go_to_webinar/attendee'
5
4
  require 'go_to_webinar/client'
6
5
  require 'go_to_webinar/configuration'
6
+ require 'go_to_webinar/oauth2'
7
7
  require 'go_to_webinar/registrant'
8
8
  require 'go_to_webinar/session'
9
+ require 'go_to_webinar/version'
9
10
  require 'go_to_webinar/webinar'
10
11
 
11
12
  module GoToWebinar
@@ -49,3 +49,19 @@ module GoToWebinar
49
49
  end
50
50
  end
51
51
  end
52
+
53
+ # invitations = event.invitations
54
+ # corrupted = []
55
+ # attendees.each do |attendee|
56
+ # invitation = invitations.where(g2w_registrant_key: attendee.registrant_key)
57
+
58
+ # if invitation
59
+ # begin
60
+ # invitation.update(
61
+ # arrived_at: attendee.attendance.first["joinTime"].to_datetime
62
+ # )
63
+ # rescue StandardError => e
64
+ # corrupted << { invitation: invitation, attendee: attendee, exception: e }
65
+ # end
66
+ # end
67
+ # end
@@ -2,11 +2,12 @@ module GoToWebinar
2
2
  class Client
3
3
  attr_accessor :url, :organizer_key, :access_token
4
4
 
5
- def initialize(access_token: nil, organizer_key: nil, url: nil)
5
+ def initialize(organizer_key: nil, url: nil)
6
6
  config = GoToWebinar.configuration
7
7
  @url = url || config.url
8
8
  @organizer_key = organizer_key || config.organizer_key
9
- @access_token = access_token || config.access_token
9
+ @g2w_oauth2_client = GoToWebinar::OAuth2::Client.new
10
+ @access_token = @g2w_oauth2_client.access_token&.token || config.access_token
10
11
  end
11
12
 
12
13
  def headers
@@ -17,28 +18,48 @@ module GoToWebinar
17
18
  end
18
19
 
19
20
  def get(path, data = {})
20
- response = RestClient.get(make_path(path), data.merge(headers))
21
- JSON.parse(response.body)
21
+ attempt { parse(RestClient.get(make_path(path), data.merge(headers))) }
22
22
  end
23
23
 
24
24
  def post(path, data)
25
- response = RestClient.post(make_path(path), data, headers)
26
- JSON.parse(response.body)
25
+ attempt { parse(RestClient.post(make_path(path), data, headers)) }
27
26
  end
28
27
 
29
28
  def put(path, data)
30
- response = RestClient.put(make_path(path), data, headers)
31
- JSON.parse(response.body)
29
+ attempt { parse(RestClient.put(make_path(path), data, headers)) }
32
30
  end
33
31
 
34
32
  def delete
35
- response = RestClient.delete(make_path(path), data, headers)
36
- JSON.parse(response.body)
33
+ attempt { parse(RestClient.delete(make_path(path), data, headers)) }
37
34
  end
38
35
 
39
36
  def make_path(path)
40
37
  path.gsub!(':organizer_key:', organizer_key)
41
38
  "#{url}#{path}"
42
39
  end
40
+
41
+ private
42
+
43
+ def attempt
44
+ begin
45
+ retries ||= 0
46
+ yield
47
+ rescue RestClient::Forbidden => exception
48
+ raise unless (retires += 1) < 2
49
+ raise unless int_error_code(exception) == "InvalidToken"
50
+ raise unless @access_token&.expired?
51
+
52
+ @access_token = @g2w_oauth2_client.refresh_access_token.token
53
+ retry
54
+ end
55
+ end
56
+
57
+ def int_error_code(exception)
58
+ JSON.parse(exception&.http_body)&.[]("int_err_code")
59
+ end
60
+
61
+ def parse(response)
62
+ JSON.parse(response.body)
63
+ end
43
64
  end
44
65
  end
@@ -1,3 +1,3 @@
1
1
  module GoToWebinar
2
- VERSION = "0.1.8"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: go_to_webinar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danilo Jeremias da Silva
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-03-19 00:00:00.000000000 Z
12
+ date: 2020-03-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
@@ -25,6 +25,34 @@ dependencies:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
27
  version: '2.0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: oauth2
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: 1.4.4
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 1.4.4
42
+ - !ruby/object:Gem::Dependency
43
+ name: redis
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '4.0'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '4.0'
28
56
  - !ruby/object:Gem::Dependency
29
57
  name: bundler
30
58
  requirement: !ruby/object:Gem::Requirement