qalam_oauth_engine 3.0.0 → 3.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +0 -0
  3. data/README.md +0 -0
  4. data/Rakefile +0 -0
  5. data/app/controllers/canvas_oauth/canvas_controller.rb +11 -2
  6. data/app/controllers/canvas_oauth/oauth_application_controller.rb +0 -0
  7. data/app/models/canvas_lti_key.rb +4 -0
  8. data/app/models/canvas_oauth/authorization.rb +10 -1
  9. data/config/canvas.yml.example +0 -0
  10. data/config/routes.rb +0 -0
  11. data/db/migrate/20121121005358_create_canvas_oauth_authorizations.rb +1 -0
  12. data/db/migrate/20210809092919_create_canvas_lti_keys.rb +11 -0
  13. data/lib/canvas_oauth.rb +0 -0
  14. data/lib/canvas_oauth/canvas_api.rb +136 -95
  15. data/lib/canvas_oauth/canvas_api_extensions.rb +5 -2
  16. data/lib/canvas_oauth/canvas_application.rb +0 -0
  17. data/lib/canvas_oauth/canvas_config.rb +3 -8
  18. data/lib/canvas_oauth/config.rb +0 -0
  19. data/lib/canvas_oauth/default_utf8_parser.rb +0 -0
  20. data/lib/canvas_oauth/engine.rb +0 -0
  21. data/lib/canvas_oauth/version.rb +1 -1
  22. data/lib/tasks/canvas_oauth_tasks.rake +0 -0
  23. data/spec/controllers/canvas_oauth/canvas_controller_spec.rb +0 -0
  24. data/spec/dummy/README.rdoc +0 -0
  25. data/spec/dummy/Rakefile +0 -0
  26. data/spec/dummy/app/controllers/application_controller.rb +0 -0
  27. data/spec/dummy/app/controllers/welcome_controller.rb +0 -0
  28. data/spec/dummy/config.ru +0 -0
  29. data/spec/dummy/config/application.rb +0 -0
  30. data/spec/dummy/config/boot.rb +0 -0
  31. data/spec/dummy/config/canvas.yml +0 -0
  32. data/spec/dummy/config/database.yml +0 -0
  33. data/spec/dummy/config/environment.rb +0 -0
  34. data/spec/dummy/config/environments/development.rb +0 -0
  35. data/spec/dummy/config/environments/production.rb +0 -0
  36. data/spec/dummy/config/environments/test.rb +0 -0
  37. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -0
  38. data/spec/dummy/config/initializers/inflections.rb +0 -0
  39. data/spec/dummy/config/initializers/mime_types.rb +0 -0
  40. data/spec/dummy/config/initializers/secret_token.rb +0 -0
  41. data/spec/dummy/config/initializers/session_store.rb +0 -0
  42. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -0
  43. data/spec/dummy/config/locales/en.yml +0 -0
  44. data/spec/dummy/config/routes.rb +0 -0
  45. data/spec/dummy/db/development.sqlite3 +0 -0
  46. data/spec/dummy/db/migrate/20160711200737_create_canvas_oauth_authorizations.canvas_oauth.rb +0 -0
  47. data/spec/dummy/db/schema.rb +0 -0
  48. data/spec/dummy/db/test.sqlite3 +0 -0
  49. data/spec/dummy/log/development.log +0 -0
  50. data/spec/dummy/log/test.log +0 -0
  51. data/spec/dummy/public/404.html +0 -0
  52. data/spec/dummy/public/422.html +0 -0
  53. data/spec/dummy/public/500.html +0 -0
  54. data/spec/dummy/public/favicon.ico +0 -0
  55. data/spec/dummy/public/robots.txt +0 -0
  56. data/spec/lib/canvas_oauth/canvas_api_extensions_spec.rb +0 -0
  57. data/spec/lib/canvas_oauth/canvas_api_spec.rb +0 -0
  58. data/spec/lib/canvas_oauth/default_utf8_parser_spec.rb +0 -0
  59. data/spec/models/canvas_oauth/authorization_spec.rb +0 -0
  60. data/spec/spec_helper.rb +0 -0
  61. metadata +7 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c279d51629e80dacd77e7c365883cf2ffb44ea9fd77dec8effd0488c9ef91f8e
4
- data.tar.gz: 6e70cf4d4b5c336df62942203e1c813218bf65b035b9ebf3a692cbf781cfaa7b
3
+ metadata.gz: e153aaa7541aee767fe47cb0824831482a12f392f1bd87803ee4ad4703e7d30f
4
+ data.tar.gz: '0494829ca2a3a9d94c7ddee7ca5b853de2df985e74e1d3f142f1d805578826ad'
5
5
  SHA512:
6
- metadata.gz: 57ee1b2f2d570024c32e4f0c215e55e461ce7b1f3975b645570f3b7771f31f409c79bd72cd0f2394f2ba2840716c3bad59516ae606d565edc4e10af84b8abb32
7
- data.tar.gz: d40987744306c6069faf0efeec603f88847be0de290c91dcf43bdc3d44f2ad8e9de03bf696bb6a2a525e672865c0543eb7a86d5e5efe288314e4f58fd5dcf6cd
6
+ metadata.gz: 2bca130d4a82b30db36ebb3fb1a6208db2b7cc6350cd97e8c1a9e9ada3498e0d3f431f2c4f626db35bfeb03e540e27a1b9e5543487380da2b9b73783b4b6d0cc
7
+ data.tar.gz: 91a7d377612aa1e3d5036e730348224c7c0d0f60f0aa1635d4c4f1f6f6d7d847f6c9f40430bb3538d4e6cb8638893d2b6ccf0f631aebdcd6768953cb1ab293df
data/MIT-LICENSE CHANGED
File without changes
data/README.md CHANGED
File without changes
data/Rakefile CHANGED
File without changes
@@ -5,8 +5,9 @@ module CanvasOauth
5
5
  def oauth
6
6
  if verify_oauth2_state(params[:state]) && params[:code]
7
7
  if token = canvas.get_access_token(params[:code])
8
+ set_root_account
8
9
  refresh_token = canvas.refresh_token
9
- if CanvasOauth::Authorization.cache_token(token, refresh_token, user_id, tool_consumer_instance_guid)
10
+ if CanvasOauth::Authorization.cache_token(token, refresh_token, user_id, @root_account_id, tool_consumer_instance_guid)
10
11
  redirect_to main_app.root_path
11
12
  else
12
13
  render plain: "Error: unable to save token"
@@ -23,4 +24,12 @@ module CanvasOauth
23
24
  callback_state.present? && callback_state == session.delete(:oauth2_state)
24
25
  end
25
26
  end
26
- end
27
+
28
+ def set_root_account
29
+ if current_account_id
30
+ @root_account_id = canvas.root_account_id(current_account_id)
31
+ elsif current_course_id
32
+ @root_account_id = canvas.course_root_account_id(current_course_id)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,4 @@
1
+ class CanvasLtiKey < ApplicationRecord
2
+ validates :canvas_url, :secret, presence: true
3
+ validates :key, presence: true, :uniqueness => {:scope=>:canvas_url}
4
+ end
@@ -2,16 +2,25 @@ module CanvasOauth
2
2
  class Authorization < ActiveRecord::Base
3
3
  validates :canvas_user_id, :token, :refresh_token, :last_used_at, presence: true
4
4
 
5
- def self.cache_token(token, refresh_token, user_id, tool_consumer_instance_guid)
5
+ def self.cache_token(token, refresh_token, user_id, account_id, tool_consumer_instance_guid)
6
6
  create do |t|
7
7
  t.token = token
8
8
  t.refresh_token = refresh_token
9
9
  t.canvas_user_id = user_id
10
+ t.canvas_root_account_id = account_id
10
11
  t.tool_consumer_instance_guid = tool_consumer_instance_guid
11
12
  t.last_used_at = Time.now
12
13
  end
13
14
  end
14
15
 
16
+ def self.fetch_account(user_id, tool_consumer_instance_guid)
17
+ user_accounts = where(canvas_user_id: user_id, tool_consumer_instance_guid: tool_consumer_instance_guid).order("created_at DESC")
18
+ if canvas_auth = user_accounts.first
19
+ canvas_auth.update_attribute(:last_used_at, Time.now)
20
+ return canvas_auth.canvas_root_account_id
21
+ end
22
+ end
23
+
15
24
  def self.fetch_token(user_id, tool_consumer_instance_guid)
16
25
  user_tokens = where(canvas_user_id: user_id, tool_consumer_instance_guid: tool_consumer_instance_guid).order("created_at DESC")
17
26
  if canvas_auth = user_tokens.first
File without changes
data/config/routes.rb CHANGED
File without changes
@@ -2,6 +2,7 @@ class CreateCanvasOauthAuthorizations < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table "canvas_oauth_authorizations", :force => true do |t|
4
4
  t.integer "canvas_user_id", :limit => 8
5
+ t.integer "canvas_root_account_id", :limit => 8
5
6
  t.string "tool_consumer_instance_guid", :null => false
6
7
  t.string "token"
7
8
  t.string "refresh_token"
@@ -0,0 +1,11 @@
1
+ class CreateCanvasLtiKeys < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :canvas_lti_keys do |t|
4
+ t.string :key
5
+ t.string :secret
6
+ t.string :canvas_url
7
+
8
+ t.timestamps
9
+ end
10
+ end
11
+ end
data/lib/canvas_oauth.rb CHANGED
File without changes
@@ -6,19 +6,21 @@ module CanvasOauth
6
6
  attr_accessor :token, :refresh_token, :key, :secret
7
7
  attr_reader :canvas_url, :canvas_user_id
8
8
 
9
- def initialize(canvas_url, canvas_user_id, token, refresh_token, key, secret)
9
+ def initialize(canvas_url, canvas_user_id, canvas_root_account_id, token, refresh_token, key, secret)
10
10
  unless [key, secret].all?(&:present?)
11
- raise "Invalid Canvas oAuth configuration"
11
+ raise "Invalid Qalam oAuth configuration"
12
12
  end
13
13
 
14
14
  self.refresh_token = refresh_token
15
15
  self.canvas_url = canvas_url
16
16
  self.canvas_user_id = canvas_user_id
17
+ self.canvas_root_account_id = canvas_root_account_id
17
18
  self.token = token
18
19
  self.key = key
19
20
  self.secret = secret
20
21
  end
21
22
 
23
+ ### START AUTH ###
22
24
  def authenticated_request(method, *params)
23
25
  params << {} if params.size == 1
24
26
 
@@ -53,6 +55,55 @@ module CanvasOauth
53
55
  end
54
56
  end
55
57
 
58
+ def auth_url(redirect_uri, oauth2_state)
59
+ "#{canvas_url}/login/oauth2/auth?client_id=#{key}&response_type=code&state=#{oauth2_state}&redirect_uri=#{redirect_uri}"
60
+ end
61
+
62
+ def qalam_auth_url(qalam_url, redirect_uri, oauth2_state)
63
+ "#{qalam_url}/login/oauth2/auth?client_id=#{key}&response_type=code&state=#{oauth2_state}&redirect_uri=#{redirect_uri}"
64
+ end
65
+
66
+ def get_access_token(code)
67
+ params = {
68
+ body: {
69
+ client_id: key,
70
+ client_secret: secret,
71
+ code: code
72
+ }
73
+ }
74
+
75
+ response = self.class.post '/login/oauth2/token', params
76
+ self.refresh_token = response['refresh_token']
77
+ self.token = response['access_token']
78
+ end
79
+
80
+ def get_access_token_by_refresh_token
81
+ params = {
82
+ body: {
83
+ grant_type: 'refresh_token',
84
+ client_id: key,
85
+ client_secret: secret,
86
+ refresh_token: refresh_token
87
+ }
88
+ }
89
+
90
+ response = self.class.post '/login/oauth2/token', params
91
+ self.token = response['access_token']
92
+ CanvasOauth::Authorization.update_token(refresh_token, token)
93
+ end
94
+
95
+ def authenticated_get(*params)
96
+ authenticated_request(:get, *params)
97
+ end
98
+
99
+ def authenticated_post(*params)
100
+ authenticated_request(:post, *params)
101
+ end
102
+
103
+ def authenticated_put(*params)
104
+ authenticated_request(:put, *params)
105
+ end
106
+
56
107
  def paginated_get(url, params = {})
57
108
  params[:query] ||= {}
58
109
  params[:query][:per_page] = PER_PAGE
@@ -69,34 +120,29 @@ module CanvasOauth
69
120
 
70
121
  all_pages
71
122
  end
72
-
73
- def get_report(account_id, report_type, params)
74
- report = authenticated_post("/api/v1/accounts/#{account_id}/reports/#{report_type}", { body: params })
75
- report = authenticated_get "/api/v1/accounts/#{account_id}/reports/#{report_type}/#{report['id']}"
76
- while (report['status'] == 'created' || report['status'] == 'running')
77
- sleep(4)
78
- report = authenticated_get "/api/v1/accounts/#{account_id}/reports/#{report_type}/#{report['id']}"
79
- end
80
-
81
- if report['status'] == 'complete'
82
- file_id = report['file_url'].match(/files\/([0-9]+)\/download/)[1]
83
- file = get_file(file_id)
84
- return hash_csv(self.class.get(file['url'], limit: 15, parser: DefaultUTF8Parser).parsed_response)
85
- else
86
- return report
87
- end
123
+ ### END AUTH ###
124
+
125
+ ### HELPER METHODS ###
126
+ def canvas_url=(value)
127
+ @canvas_url = value
128
+ self.class.base_uri(value)
88
129
  end
89
-
90
- def valid_page?(page)
91
- page && page.size > 0
130
+
131
+ def canvas_user_id=(value)
132
+ @canvas_user_id = value
92
133
  end
93
134
 
94
- def get_file(file_id)
95
- authenticated_get "/api/v1/files/#{file_id}"
135
+ def canvas_root_account_id=(value)
136
+ @canvas_root_account_id = value
137
+ end
138
+
139
+ def hex_sis_id(name, value)
140
+ hex = value.unpack("H*")[0]
141
+ return "hex:#{name}:#{hex}"
96
142
  end
97
143
 
98
- def get_accounts_provisioning_report(account_id)
99
- get_report(account_id, :provisioning_csv, 'parameters[accounts]' => true)
144
+ def valid_page?(page)
145
+ page && page.size > 0
100
146
  end
101
147
 
102
148
  #Needs to be refactored to somewhere more generic
@@ -117,17 +163,61 @@ module CanvasOauth
117
163
 
118
164
  return output
119
165
  end
166
+ ### END HELPER METHODS ###
167
+
168
+ ### CANVAS API ###
169
+ # get_report
170
+ # get_file
171
+ # get_accounts_provisioning_report
172
+ # get_courses
173
+ # get_account
174
+ # get_account_sub_accounts
175
+ # get_account_courses
176
+ # get_account_users
177
+ # get_course
178
+ # get_section_enrollments
179
+ # get_user_enrollments
180
+ # get_course_users
181
+ # get_all_course_users
182
+ # get_course_teachers_and_tas
183
+ # get_course_students
184
+ # get_course_active_students
185
+ # get_section
186
+ # get_sections
187
+ # get_assignments
188
+ # get_assignment
189
+ # get_user_profile
190
+ # create_assignment
191
+ # update_assignment
192
+ # grade_assignment
193
+ # get_submission
194
+ # course_account_id
195
+ # root_account_id
196
+ # course_root_account_id
197
+
198
+ def get_report(account_id, report_type, params)
199
+ report = authenticated_post("/api/v1/accounts/#{account_id}/reports/#{report_type}", { body: params })
200
+ report = authenticated_get "/api/v1/accounts/#{account_id}/reports/#{report_type}/#{report['id']}"
201
+ while (report['status'] == 'created' || report['status'] == 'running')
202
+ sleep(4)
203
+ report = authenticated_get "/api/v1/accounts/#{account_id}/reports/#{report_type}/#{report['id']}"
204
+ end
120
205
 
121
- def authenticated_get(*params)
122
- authenticated_request(:get, *params)
206
+ if report['status'] == 'complete'
207
+ file_id = report['file_url'].match(/files\/([0-9]+)\/download/)[1]
208
+ file = get_file(file_id)
209
+ return hash_csv(self.class.get(file['url'], limit: 15, parser: DefaultUTF8Parser).parsed_response)
210
+ else
211
+ return report
212
+ end
123
213
  end
124
214
 
125
- def authenticated_post(*params)
126
- authenticated_request(:post, *params)
215
+ def get_file(file_id)
216
+ authenticated_get "/api/v1/files/#{file_id}"
127
217
  end
128
218
 
129
- def authenticated_put(*params)
130
- authenticated_request(:put, *params)
219
+ def get_accounts_provisioning_report(account_id)
220
+ get_report(account_id, :provisioning_csv, 'parameters[accounts]' => true)
131
221
  end
132
222
 
133
223
  def get_courses
@@ -146,7 +236,7 @@ module CanvasOauth
146
236
  paginated_get "/api/v1/accounts/#{account_id}/courses"
147
237
  end
148
238
 
149
- def get_account_courses(account_id)
239
+ def get_account_users(account_id)
150
240
  paginated_get "/api/v1/accounts/#{account_id}/users"
151
241
  end
152
242
 
@@ -234,59 +324,17 @@ module CanvasOauth
234
324
  def course_root_account_id(course_id)
235
325
  root_account_id(course_account_id(course_id))
236
326
  end
327
+ ### END CANVAS API ###
237
328
 
238
- def auth_url(redirect_uri, oauth2_state)
239
- "#{canvas_url}/login/oauth2/auth?client_id=#{key}&response_type=code&state=#{oauth2_state}&redirect_uri=#{redirect_uri}"
240
- end
241
-
242
- def qalam_auth_url(qalam_url, redirect_uri, oauth2_state)
243
- "#{qalam_url}/login/oauth2/auth?client_id=#{key}&response_type=code&state=#{oauth2_state}&redirect_uri=#{redirect_uri}"
244
- end
245
-
246
- def get_access_token(code)
247
- params = {
248
- body: {
249
- client_id: key,
250
- client_secret: secret,
251
- code: code
252
- }
253
- }
254
-
255
- response = self.class.post '/login/oauth2/token', params
256
- self.refresh_token = response['refresh_token']
257
- self.token = response['access_token']
258
- end
259
-
260
- def get_access_token_by_refresh_token
261
- params = {
262
- body: {
263
- grant_type: 'refresh_token',
264
- client_id: key,
265
- client_secret: secret,
266
- refresh_token: refresh_token
267
- }
268
- }
329
+ ### QALAM API ENDPOINTS ###
330
+ # get_canvas_user_profile
331
+ # get_course_active_pages
332
+ # course_external_tool_update
333
+ # account_external_tool_update
334
+ # get_school_details
335
+ # get_grade_students
336
+ # get_classroom_students
269
337
 
270
- response = self.class.post '/login/oauth2/token', params
271
- self.token = response['access_token']
272
- CanvasOauth::Authorization.update_token(refresh_token, token)
273
- end
274
-
275
- def hex_sis_id(name, value)
276
- hex = value.unpack("H*")[0]
277
- return "hex:#{name}:#{hex}"
278
- end
279
-
280
- def canvas_url=(value)
281
- @canvas_url = value
282
- self.class.base_uri(value)
283
- end
284
-
285
- def canvas_user_id=(value)
286
- @canvas_user_id = value
287
- end
288
-
289
- ### QALAM ###
290
338
  def get_canvas_user_profile
291
339
  authenticated_get "/api/v1/users/#{canvas_user_id}/profile"
292
340
  end
@@ -313,21 +361,14 @@ module CanvasOauth
313
361
  authenticated_get "/api/v1/accounts/#{account_id}/school_details"
314
362
  end
315
363
 
316
- def get_school_account(account_id)
317
- authenticated_get "/api/v1/accounts/#{account_id}/school_account"
318
- end
319
-
320
- def get_school_account_by_course(course_id)
321
- authenticated_get "/api/v1/courses/#{course_id}/school_account"
322
- end
323
-
324
- def get_students_by_grade(account_id, grade_id)
325
- paginated_get "/api/v1/accounts/#{account_id}/students_by_grade/#{grade_id}"
364
+ def get_grade_students(account_id, grade_id)
365
+ paginated_get "/api/v1/accounts/#{account_id}/grade_students/#{grade_id}"
326
366
  end
327
367
 
328
- def get_students_by_class(account_id, class_id)
329
- paginated_get "/api/v1/accounts/#{account_id}/students_by_class_room/#{class_id}"
368
+ def get_classroom_students(account_id, class_id)
369
+ paginated_get "/api/v1/accounts/#{account_id}/classroom_students/#{class_id}"
330
370
  end
371
+ ### END QALAM API ###
331
372
  end
332
373
 
333
374
  class CanvasApi::Unauthorized < StandardError ; end
@@ -1,9 +1,12 @@
1
1
  module CanvasOauth
2
2
  class CanvasApiExtensions
3
3
  def self.build(canvas_url, user_id, tool_consumer_instance_guid)
4
- refresh_token = CanvasOauth::Authorization.fetch_refresh_token(user_id, tool_consumer_instance_guid)
4
+ account_id = CanvasOauth::Authorization.fetch_ccount(user_id, tool_consumer_instance_guid)
5
5
  token = CanvasOauth::Authorization.fetch_token(user_id, tool_consumer_instance_guid)
6
- CanvasApi.new(canvas_url, user_id, token, refresh_token, CanvasConfig.key, CanvasConfig.secret)
6
+ refresh_token = CanvasOauth::Authorization.fetch_refresh_token(user_id, tool_consumer_instance_guid)
7
+ canvas_key = ((CanvasLtiKey.table_exists? && CanvasLtiKey.find_by(canvas_url: canvas_url)&.key) or CanvasConfig.key)
8
+ canvas_secret = ((CanvasLtiKey.table_exists? && CanvasLtiKey.find_by(key: canvas_key, canvas_url: canvas_url)&.secret) or CanvasConfig.secret)
9
+ CanvasApi.new(canvas_url, user_id, account_id, token, refresh_token, canvas_key, canvas_secret)
7
10
  end
8
11
  end
9
12
  end
File without changes
@@ -13,21 +13,16 @@ module CanvasOauth
13
13
 
14
14
  def self.setup!
15
15
  if File.exists?(config_file)
16
- Rails.logger.info "Initializing Canvas using configuration in #{config_file}"
16
+ Rails.logger.info "Initializing Qalam using configuration in #{config_file}"
17
17
  config = load_config
18
18
  self.key = config['key']
19
19
  self.secret = config['secret']
20
-
21
- Rails.logger.info "\n> Initializing Key #{config['key']} - Secret #{config['secret']}\n".green
22
-
23
20
  elsif ENV['CANVAS_KEY'].present? && ENV['CANVAS_SECRET'].present?
24
- Rails.logger.info "Initializing Canvas using environment vars CANVAS_KEY and CANVAS_SECRET"
21
+ Rails.logger.info "Initializing Qalam using environment vars CANVAS_KEY and CANVAS_SECRET"
25
22
  self.key = ENV['CANVAS_KEY']
26
23
  self.secret = ENV['CANVAS_SECRET']
27
-
28
- Rails.logger.info "\n> Initializing Key #{ENV['CANVAS_KEY']} - Secret #{ENV['CANVAS_SECRET']}\n".green
29
24
  else
30
- warn "Warning: Canvas key and secret not configured (RAILS_ENV = #{ENV['RAILS_ENV']})."
25
+ warn "Warning: Qalam key and secret not configured (RAILS_ENV = #{ENV['RAILS_ENV']})."
31
26
  end
32
27
  end
33
28
  end
File without changes
File without changes
File without changes
@@ -1,3 +1,3 @@
1
1
  module CanvasOauth
2
- VERSION = "3.0.0"
2
+ VERSION = "3.0.4"
3
3
  end
File without changes
File without changes
data/spec/dummy/Rakefile CHANGED
File without changes
File without changes
File without changes
data/spec/dummy/config.ru CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/spec/spec_helper.rb CHANGED
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qalam_oauth_engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dave Donahue
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2021-04-21 00:00:00.000000000 Z
14
+ date: 2021-08-22 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: httparty
@@ -50,7 +50,7 @@ dependencies:
50
50
  version: '4.2'
51
51
  - - "<"
52
52
  - !ruby/object:Gem::Version
53
- version: '5.3'
53
+ version: '6.1'
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -60,7 +60,7 @@ dependencies:
60
60
  version: '4.2'
61
61
  - - "<"
62
62
  - !ruby/object:Gem::Version
63
- version: '5.3'
63
+ version: '6.1'
64
64
  - !ruby/object:Gem::Dependency
65
65
  name: byebug
66
66
  requirement: !ruby/object:Gem::Requirement
@@ -257,10 +257,12 @@ files:
257
257
  - Rakefile
258
258
  - app/controllers/canvas_oauth/canvas_controller.rb
259
259
  - app/controllers/canvas_oauth/oauth_application_controller.rb
260
+ - app/models/canvas_lti_key.rb
260
261
  - app/models/canvas_oauth/authorization.rb
261
262
  - config/canvas.yml.example
262
263
  - config/routes.rb
263
264
  - db/migrate/20121121005358_create_canvas_oauth_authorizations.rb
265
+ - db/migrate/20210809092919_create_canvas_lti_keys.rb
264
266
  - lib/canvas_oauth.rb
265
267
  - lib/canvas_oauth/canvas_api.rb
266
268
  - lib/canvas_oauth/canvas_api_extensions.rb
@@ -330,7 +332,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
330
332
  - !ruby/object:Gem::Version
331
333
  version: '0'
332
334
  requirements: []
333
- rubygems_version: 3.2.3
335
+ rubygems_version: 3.2.22
334
336
  signing_key:
335
337
  specification_version: 4
336
338
  summary: CanvasOauth is a mountable engine for handling the oauth workflow with canvas