qalam_oauth_engine 3.0.0 → 3.0.4
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 +4 -4
- data/MIT-LICENSE +0 -0
- data/README.md +0 -0
- data/Rakefile +0 -0
- data/app/controllers/canvas_oauth/canvas_controller.rb +11 -2
- data/app/controllers/canvas_oauth/oauth_application_controller.rb +0 -0
- data/app/models/canvas_lti_key.rb +4 -0
- data/app/models/canvas_oauth/authorization.rb +10 -1
- data/config/canvas.yml.example +0 -0
- data/config/routes.rb +0 -0
- data/db/migrate/20121121005358_create_canvas_oauth_authorizations.rb +1 -0
- data/db/migrate/20210809092919_create_canvas_lti_keys.rb +11 -0
- data/lib/canvas_oauth.rb +0 -0
- data/lib/canvas_oauth/canvas_api.rb +136 -95
- data/lib/canvas_oauth/canvas_api_extensions.rb +5 -2
- data/lib/canvas_oauth/canvas_application.rb +0 -0
- data/lib/canvas_oauth/canvas_config.rb +3 -8
- data/lib/canvas_oauth/config.rb +0 -0
- data/lib/canvas_oauth/default_utf8_parser.rb +0 -0
- data/lib/canvas_oauth/engine.rb +0 -0
- data/lib/canvas_oauth/version.rb +1 -1
- data/lib/tasks/canvas_oauth_tasks.rake +0 -0
- data/spec/controllers/canvas_oauth/canvas_controller_spec.rb +0 -0
- data/spec/dummy/README.rdoc +0 -0
- data/spec/dummy/Rakefile +0 -0
- data/spec/dummy/app/controllers/application_controller.rb +0 -0
- data/spec/dummy/app/controllers/welcome_controller.rb +0 -0
- data/spec/dummy/config.ru +0 -0
- data/spec/dummy/config/application.rb +0 -0
- data/spec/dummy/config/boot.rb +0 -0
- data/spec/dummy/config/canvas.yml +0 -0
- data/spec/dummy/config/database.yml +0 -0
- data/spec/dummy/config/environment.rb +0 -0
- data/spec/dummy/config/environments/development.rb +0 -0
- data/spec/dummy/config/environments/production.rb +0 -0
- data/spec/dummy/config/environments/test.rb +0 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -0
- data/spec/dummy/config/initializers/inflections.rb +0 -0
- data/spec/dummy/config/initializers/mime_types.rb +0 -0
- data/spec/dummy/config/initializers/secret_token.rb +0 -0
- data/spec/dummy/config/initializers/session_store.rb +0 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +0 -0
- data/spec/dummy/config/locales/en.yml +0 -0
- data/spec/dummy/config/routes.rb +0 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/20160711200737_create_canvas_oauth_authorizations.canvas_oauth.rb +0 -0
- data/spec/dummy/db/schema.rb +0 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +0 -0
- data/spec/dummy/log/test.log +0 -0
- data/spec/dummy/public/404.html +0 -0
- data/spec/dummy/public/422.html +0 -0
- data/spec/dummy/public/500.html +0 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/public/robots.txt +0 -0
- data/spec/lib/canvas_oauth/canvas_api_extensions_spec.rb +0 -0
- data/spec/lib/canvas_oauth/canvas_api_spec.rb +0 -0
- data/spec/lib/canvas_oauth/default_utf8_parser_spec.rb +0 -0
- data/spec/models/canvas_oauth/authorization_spec.rb +0 -0
- data/spec/spec_helper.rb +0 -0
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e153aaa7541aee767fe47cb0824831482a12f392f1bd87803ee4ad4703e7d30f
|
4
|
+
data.tar.gz: '0494829ca2a3a9d94c7ddee7ca5b853de2df985e74e1d3f142f1d805578826ad'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
File without changes
|
@@ -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
|
data/config/canvas.yml.example
CHANGED
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"
|
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
|
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
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
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
|
91
|
-
|
130
|
+
|
131
|
+
def canvas_user_id=(value)
|
132
|
+
@canvas_user_id = value
|
92
133
|
end
|
93
134
|
|
94
|
-
def
|
95
|
-
|
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
|
99
|
-
|
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
|
-
|
122
|
-
|
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
|
126
|
-
|
215
|
+
def get_file(file_id)
|
216
|
+
authenticated_get "/api/v1/files/#{file_id}"
|
127
217
|
end
|
128
218
|
|
129
|
-
def
|
130
|
-
|
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
|
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
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
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
|
317
|
-
|
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
|
329
|
-
paginated_get "/api/v1/accounts/#{account_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
|
-
|
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
|
-
|
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
|
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
|
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:
|
25
|
+
warn "Warning: Qalam key and secret not configured (RAILS_ENV = #{ENV['RAILS_ENV']})."
|
31
26
|
end
|
32
27
|
end
|
33
28
|
end
|
data/lib/canvas_oauth/config.rb
CHANGED
File without changes
|
File without changes
|
data/lib/canvas_oauth/engine.rb
CHANGED
File without changes
|
data/lib/canvas_oauth/version.rb
CHANGED
File without changes
|
File without changes
|
data/spec/dummy/README.rdoc
CHANGED
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
|
data/spec/dummy/config/boot.rb
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
|
data/spec/dummy/config/routes.rb
CHANGED
File without changes
|
File without changes
|
data/spec/dummy/db/migrate/20160711200737_create_canvas_oauth_authorizations.canvas_oauth.rb
CHANGED
File without changes
|
data/spec/dummy/db/schema.rb
CHANGED
File without changes
|
data/spec/dummy/db/test.sqlite3
CHANGED
File without changes
|
File without changes
|
data/spec/dummy/log/test.log
CHANGED
File without changes
|
data/spec/dummy/public/404.html
CHANGED
File without changes
|
data/spec/dummy/public/422.html
CHANGED
File without changes
|
data/spec/dummy/public/500.html
CHANGED
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.
|
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-
|
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: '
|
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: '
|
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.
|
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
|