lms-api 1.2.7 → 1.2.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/lms/canvas.rb +29 -9
- data/lib/lms/helper_urls.rb +8 -0
- data/lib/lms/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67b3b72f988679b53c1765c8865815d08be99ac2
|
4
|
+
data.tar.gz: 27a7f36cdcd20407e5d5ece8e41959a03a4083e5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70d881c7ff2b502d960832f59cb828d23342f09ced74671d0c0df3989a6f6a023e9d01526479399a1b10fab7eebf208b96282bd4f6db718b6651c17945f2ba09
|
7
|
+
data.tar.gz: aad199ea1ec1c3232b59e220e2e566512ae13ff4fd048608c56588b5f0240f6990fa48adab77f9e0b1e464dcdf01b47d5d71fd22ac2ca3ae2b4117975558134a
|
data/lib/lms/canvas.rb
CHANGED
@@ -7,13 +7,10 @@ require "active_support/core_ext/hash/indifferent_access"
|
|
7
7
|
require "ostruct"
|
8
8
|
|
9
9
|
require "lms/canvas_urls"
|
10
|
+
require "lms/helper_urls"
|
10
11
|
|
11
12
|
module LMS
|
12
13
|
|
13
|
-
CANVAS_HELPER_URLs = {
|
14
|
-
"HELPER_ALL_ACCOUNTS" => :all_accounts
|
15
|
-
}
|
16
|
-
|
17
14
|
class Canvas
|
18
15
|
|
19
16
|
# a model that encapsulates authentication state. By default, it
|
@@ -205,8 +202,7 @@ module LMS
|
|
205
202
|
end
|
206
203
|
end
|
207
204
|
|
208
|
-
def
|
209
|
-
|
205
|
+
def multi_proxy(type, params, payload = nil, get_all = false)
|
210
206
|
# Helper methods call several Canvas methods to return a block of data to the client
|
211
207
|
if helper = CANVAS_HELPER_URLs[type]
|
212
208
|
result = self.send(helper)
|
@@ -216,7 +212,9 @@ module LMS
|
|
216
212
|
body: result.to_json
|
217
213
|
)
|
218
214
|
end
|
215
|
+
end
|
219
216
|
|
217
|
+
def single_proxy(type, params, payload = nil, get_all = false)
|
220
218
|
additional_headers = {
|
221
219
|
"Content-Type" => "application/json"
|
222
220
|
}
|
@@ -259,13 +257,27 @@ module LMS
|
|
259
257
|
raise new_ex
|
260
258
|
end
|
261
259
|
|
260
|
+
def proxy(type, params, payload = nil, get_all = false, &block)
|
261
|
+
multi_proxy(type, params, payload, get_all) ||
|
262
|
+
single_proxy(type, params, payload, get_all, &block)
|
263
|
+
end
|
264
|
+
|
262
265
|
# Ignore required params for specific calls. For example, the external tool calls
|
263
266
|
# have required params "name, privacy_level, consumer_key, shared_secret". However, those
|
264
267
|
# params are not required if the call specifies config_type: "by_xml".
|
265
268
|
def self.ignore_required(type)
|
266
269
|
[
|
267
270
|
"CREATE_EXTERNAL_TOOL_COURSES",
|
268
|
-
"CREATE_EXTERNAL_TOOL_ACCOUNTS"
|
271
|
+
"CREATE_EXTERNAL_TOOL_ACCOUNTS",
|
272
|
+
].include?(type)
|
273
|
+
end
|
274
|
+
|
275
|
+
# These methods allow custom paths to be appended to the API endpoint.
|
276
|
+
def self.allow_scoped_path(type)
|
277
|
+
[
|
278
|
+
"STORE_CUSTOM_DATA",
|
279
|
+
"LOAD_CUSTOM_DATA",
|
280
|
+
"DELETE_CUSTOM_DATA",
|
269
281
|
].include?(type)
|
270
282
|
end
|
271
283
|
|
@@ -302,6 +314,14 @@ module LMS
|
|
302
314
|
args = params.slice(*path_parameters).symbolize_keys
|
303
315
|
uri = args.blank? ? uri_proc.call : uri_proc.call(**args)
|
304
316
|
|
317
|
+
# Handle scopes in the url. These API endpoints allow for additional path
|
318
|
+
# information to be added to their urls.
|
319
|
+
# ie "users/#{user_id}/custom_data/favorite_color/green"
|
320
|
+
if allow_scoped_path(type) &&
|
321
|
+
scope = params[:scope]&.gsub("../", "").gsub("..", "") # Don't allow moving up in the path
|
322
|
+
uri = File.join(uri, scope)
|
323
|
+
end
|
324
|
+
|
305
325
|
# Generate the query string
|
306
326
|
query_parameters = parameters.select { |p| p["paramType"] == "query" }.
|
307
327
|
map { |p| p["name"].to_sym }
|
@@ -326,9 +346,9 @@ module LMS
|
|
326
346
|
# Get all accounts including sub accounts
|
327
347
|
def all_accounts
|
328
348
|
all = []
|
329
|
-
|
349
|
+
single_proxy("LIST_ACCOUNTS", {}, nil, true).each do |account|
|
330
350
|
all << account
|
331
|
-
sub_accounts =
|
351
|
+
sub_accounts = single_proxy("GET_SUB_ACCOUNTS_OF_ACCOUNT",
|
332
352
|
{
|
333
353
|
account_id: account["id"],
|
334
354
|
recursive: true,
|
data/lib/lms/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lms-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Atomic Jolt
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-02-
|
13
|
+
date: 2017-02-27 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -109,6 +109,7 @@ files:
|
|
109
109
|
- Rakefile
|
110
110
|
- lib/lms/canvas.rb
|
111
111
|
- lib/lms/canvas_urls.rb
|
112
|
+
- lib/lms/helper_urls.rb
|
112
113
|
- lib/lms/version.rb
|
113
114
|
- lib/lms_api.rb
|
114
115
|
- lib/tasks/canvas_api.rake
|