coalescing_panda 4.1.10 → 4.1.11

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
  SHA1:
3
- metadata.gz: cccef2179435913dc8479713bfe97baca913ffa4
4
- data.tar.gz: 6eed848e22fc27854dae01f0383da9189be57bb3
3
+ metadata.gz: 863946fbd5f47db0f0004cf6846111a0e95c4fd9
4
+ data.tar.gz: bf977dd224d2d2c6fbbbe49dca3ef9eb33d4ae99
5
5
  SHA512:
6
- metadata.gz: 2d69a4572462912c8e10129c23a7073a26f401f94e5adc9d73befd852986c5bdb54b8ec95d5547d30d19346f9b650c7bde17d10a217813f707bdcbfc549f3e91
7
- data.tar.gz: b1fbeb9b30fb82e3dca1603bbf304c1cba5d95b777de2bac6507b2c62a22134ef0fa716cbcaf72b8473d344f64dde115ea10af8792710a53ff792cd107a48504
6
+ metadata.gz: 3138b812b0e8db4c16103f185660389e4c562624e756aa881931579de57cf608be9b1ad93e47e37a39d085a7bcff281ddd930f0e6b1aea0424af9e637e1cca0a
7
+ data.tar.gz: 05f9c464ac7f367ac2102697835c004f9446f8587ce73f7fa458432b22005b5ad4fd355d6527c3a432a37092f62aae0daf82e4b98e46a49a07b3e7ccf21da3de
@@ -13,7 +13,9 @@ module CoalescingPanda
13
13
  client_key = lti_account.oauth2_client_key
14
14
  user_id = params[:user_id]
15
15
  api_domain = params[:api_domain]
16
- client = Bearcat::Client.new(prefix: [oauth2_protocol, '://', api_domain].join)
16
+ prefix = [oauth2_protocol, '://', api_domain].join
17
+ Rails.logger.info "Creating Bearcat client for auth token retrieval pointed to: #{prefix}"
18
+ client = Bearcat::Client.new(prefix: prefix)
17
19
  token = client.retrieve_token(client_id, coalescing_panda.oauth2_redirect_url, client_key, params['code'])
18
20
  CanvasApiAuth.where('user_id = ? and api_domain = ?', user_id, api_domain).first_or_create do |auth|
19
21
  auth.api_token = token
@@ -7,10 +7,7 @@ module CoalescingPanda
7
7
  if lti_authorize!(*roles)
8
8
  user_id = params['user_id']
9
9
  launch_presentation_return_url = @lti_account.settings[:launch_presentation_return_url] || params['launch_presentation_return_url']
10
- uri = URI.parse(launch_presentation_return_url)
11
- api_domain = uri.host
12
- api_domain = "#{api_domain}:#{uri.port.to_s}" if uri.port
13
- scheme = [uri.scheme, '://'].join
10
+ uri = BearcatURI.new(launch_presentation_return_url)
14
11
  @lti_params = params.to_hash
15
12
  session['user_id'] = user_id
16
13
  session['uri'] = launch_presentation_return_url
@@ -18,15 +15,15 @@ module CoalescingPanda
18
15
  session['oauth_consumer_key'] = params['oauth_consumer_key']
19
16
  session['custom_canvas_account_id'] = params['custom_canvas_account_id']
20
17
 
21
- if token = CanvasApiAuth.where('user_id = ? and api_domain = ?', user_id, api_domain).pluck(:api_token).first
22
- @client = Bearcat::Client.new(token: token, prefix: [scheme, api_domain].join)
18
+ if token = CanvasApiAuth.where('user_id = ? and api_domain = ?', user_id, uri.api_domain).pluck(:api_token).first
19
+ @client = Bearcat::Client.new(token: token, prefix: uri.prefix)
23
20
  elsif @lti_account = params['oauth_consumer_key'] && LtiAccount.find_by_key(params['oauth_consumer_key'])
24
21
  client_id = @lti_account.oauth2_client_id
25
- client = Bearcat::Client.new(prefix: [scheme, api_domain].join)
22
+ client = Bearcat::Client.new(prefix: uri.prefix)
26
23
  session['state'] = SecureRandom.hex(32)
27
24
  @canvas_url = client.auth_redirect_url(client_id,
28
25
  coalescing_panda.oauth2_redirect_url({key: params['oauth_consumer_key'],
29
- user_id: user_id, api_domain: api_domain, state: session['state']}))
26
+ user_id: user_id, api_domain: uri.api_domain, state: session['state']}))
30
27
  #delete the added params so the original oauth sig still works
31
28
  @lti_params.delete('action')
32
29
  @lti_params.delete('controller')
@@ -43,12 +40,9 @@ module CoalescingPanda
43
40
  end
44
41
 
45
42
  if (session['user_id'] && session['uri'])
46
- uri = URI.parse(session['uri'])
47
- api_domain = uri.host
48
- api_domain = "#{api_domain}:#{uri.port.to_s}" if uri.port
49
- scheme = uri.scheme + '://'
50
- token = CanvasApiAuth.where('user_id = ? and api_domain = ?', session['user_id'], api_domain).pluck(:api_token).first
51
- @client = Bearcat::Client.new(token: token, prefix: scheme+api_domain) if token
43
+ uri = BearcatURI.new(session['uri'])
44
+ token = CanvasApiAuth.where('user_id = ? and api_domain = ?', session['user_id'], uri.api_domain).pluck(:api_token).first
45
+ @client = Bearcat::Client.new(token: token, prefix: uri.prefix) if token
52
46
  end
53
47
 
54
48
  @lti_account = LtiAccount.find_by_key(session['oauth_consumer_key']) if session['oauth_consumer_key']
@@ -128,5 +122,26 @@ module CoalescingPanda
128
122
  end
129
123
  end
130
124
 
125
+ class BearcatURI
126
+ attr_accessor :uri
127
+
128
+ def initialize(uri)
129
+ Rails.logger.info "Parsing Bearcat URI: #{uri}"
130
+ @uri = URI.parse(uri)
131
+ end
132
+
133
+ def api_domain
134
+ uri.port.present? ? "#{uri.host}:#{uri.port.to_s}" : uri.host
135
+ end
136
+
137
+ def scheme
138
+ [uri.scheme, '://'].join
139
+ end
140
+
141
+ def prefix
142
+ [scheme, api_domain].join
143
+ end
144
+ end
145
+
131
146
  end
132
147
  end
@@ -1,3 +1,3 @@
1
1
  module CoalescingPanda
2
- VERSION = '4.1.10'
2
+ VERSION = '4.1.11'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coalescing_panda
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.10
4
+ version: 4.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Mills