coalescing_panda 4.1.10 → 4.1.11

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
  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