strongmind-platform-sdk 3.19.31 → 3.19.33
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/Gemfile +1 -0
- data/Gemfile.lock +11 -6
- data/lib/platform_sdk/canvas_api/client.rb +70 -10
- data/lib/platform_sdk/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e802eae6706b8b1575aea870fa85dc1f4d8d230ee76c7c4346168838f669ddfc
|
4
|
+
data.tar.gz: de43fb4b077de0eb7360f541d3c146f4c53102ac30337bf6591b4b76c7af3a85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff125a6616567e8a2f03d66e49ecc90b776d1a38602a6dd233b70722abc63b5abd0d1d834e47dd2dc9890a00cf7f7b6aa27f66b90d68635d8ae5907e41944ff6
|
7
|
+
data.tar.gz: 80593443c2106b6db3c18792472a8292fe19b3bea3a2a1049ca2377083ff722fe1ac4a621adfc32a01f18807c2b886b22348d9e5f55cdc35da204a9bf848d7ea
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
strongmind-platform-sdk (3.19.
|
4
|
+
strongmind-platform-sdk (3.19.33)
|
5
5
|
activesupport (~> 7.1)
|
6
6
|
asset_sync
|
7
7
|
aws-sdk-secretsmanager (~> 1.66)
|
@@ -96,18 +96,18 @@ GEM
|
|
96
96
|
tzinfo (~> 2.0)
|
97
97
|
addressable (2.8.7)
|
98
98
|
public_suffix (>= 2.0.2, < 7.0)
|
99
|
-
asset_sync (2.19.
|
99
|
+
asset_sync (2.19.2)
|
100
100
|
activemodel (>= 4.1.0)
|
101
101
|
fog-core
|
102
102
|
mime-types (>= 2.99)
|
103
103
|
unf
|
104
104
|
ast (2.4.2)
|
105
105
|
aws-eventstream (1.3.0)
|
106
|
-
aws-partitions (1.
|
106
|
+
aws-partitions (1.970.0)
|
107
107
|
aws-sdk-cloudwatch (1.97.0)
|
108
108
|
aws-sdk-core (~> 3, >= 3.201.0)
|
109
109
|
aws-sigv4 (~> 1.5)
|
110
|
-
aws-sdk-core (3.
|
110
|
+
aws-sdk-core (3.202.2)
|
111
111
|
aws-eventstream (~> 1, >= 1.3.0)
|
112
112
|
aws-partitions (~> 1, >= 1.651.0)
|
113
113
|
aws-sigv4 (~> 1.9)
|
@@ -141,6 +141,8 @@ GEM
|
|
141
141
|
faraday (2.10.0)
|
142
142
|
faraday-net_http (>= 2.0, < 3.2)
|
143
143
|
logger
|
144
|
+
faraday-multipart (1.0.4)
|
145
|
+
multipart-post (~> 2)
|
144
146
|
faraday-net_http (3.1.1)
|
145
147
|
net-http
|
146
148
|
faraday-retry (2.2.1)
|
@@ -148,7 +150,8 @@ GEM
|
|
148
150
|
ffi (1.17.0)
|
149
151
|
ffi (1.17.0-x86_64-darwin)
|
150
152
|
ffi (1.17.0-x86_64-linux-gnu)
|
151
|
-
fog-aws (3.
|
153
|
+
fog-aws (3.25.0)
|
154
|
+
base64 (~> 0.2.0)
|
152
155
|
fog-core (~> 2.1)
|
153
156
|
fog-json (~> 1.1)
|
154
157
|
fog-xml (~> 0.1)
|
@@ -197,10 +200,11 @@ GEM
|
|
197
200
|
mini_portile2 (2.8.7)
|
198
201
|
minitest (5.24.1)
|
199
202
|
multi_json (1.15.0)
|
203
|
+
multipart-post (2.4.1)
|
200
204
|
mutex_m (0.2.0)
|
201
205
|
net-http (0.4.1)
|
202
206
|
uri
|
203
|
-
net-imap (0.4.
|
207
|
+
net-imap (0.4.15)
|
204
208
|
date
|
205
209
|
net-protocol
|
206
210
|
net-pop (0.1.2)
|
@@ -364,6 +368,7 @@ DEPENDENCIES
|
|
364
368
|
factory_bot
|
365
369
|
faker
|
366
370
|
faraday
|
371
|
+
faraday-multipart
|
367
372
|
faraday-retry
|
368
373
|
jwt (~> 1.5, >= 1.5.4)
|
369
374
|
learnosity-sdk (~> 0.2.2)
|
@@ -1,12 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "faraday"
|
4
|
+
require "faraday/multipart"
|
5
|
+
|
4
6
|
|
5
7
|
module PlatformSdk
|
6
8
|
module CanvasApiWrapper
|
7
9
|
# DataPipeline::Client
|
8
10
|
class Client
|
9
|
-
attr_reader :host, :token, :connection
|
11
|
+
attr_reader :host, :token, :connection, :multipart_connection
|
10
12
|
|
11
13
|
PAGE_SIZE = 10
|
12
14
|
|
@@ -16,6 +18,10 @@ module PlatformSdk
|
|
16
18
|
@host = "https://#{domain}"
|
17
19
|
@token = token
|
18
20
|
@connection = Faraday.new(url: host, headers: { 'Authorization' => "Bearer #{token}" })
|
21
|
+
@multipart_connection = Faraday.new(url: host, headers: { 'Authorization' => "Bearer #{token}" }) do |f|
|
22
|
+
f.request :multipart
|
23
|
+
f.adapter :net_http
|
24
|
+
end
|
19
25
|
end
|
20
26
|
|
21
27
|
# @param course_id [Integer]
|
@@ -209,9 +215,8 @@ module PlatformSdk
|
|
209
215
|
|
210
216
|
# @param course_id [Integer]
|
211
217
|
def course_students(course_id:)
|
212
|
-
uri = "/api/v1/courses/#{course_id}/
|
213
|
-
|
214
|
-
response = @connection.get(uri, params)
|
218
|
+
uri = "/api/v1/courses/#{course_id}/students?per_page=#{PAGE_SIZE}"
|
219
|
+
response = @connection.get(uri)
|
215
220
|
handle_rate_limiting response
|
216
221
|
if success?(response.status)
|
217
222
|
paginated_items headers: response.headers, initial_response: response.body
|
@@ -225,6 +230,23 @@ module PlatformSdk
|
|
225
230
|
end
|
226
231
|
end
|
227
232
|
|
233
|
+
# @param course_id [Integer]
|
234
|
+
def course_users(course_id:)
|
235
|
+
uri = "/api/v1/courses/#{course_id}/users?per_page=#{PAGE_SIZE}"
|
236
|
+
response = @connection.get(uri)
|
237
|
+
handle_rate_limiting response
|
238
|
+
if success?(response.status)
|
239
|
+
paginated_items headers: response.headers, initial_response: response.body
|
240
|
+
else
|
241
|
+
result = MultiJson.load response.body, symbolize_keys: true
|
242
|
+
error_messages = String.new
|
243
|
+
result[:errors].each do |error|
|
244
|
+
error_messages << "#{error[:message]} "
|
245
|
+
end
|
246
|
+
raise "Error getting course users: #{error_messages}"
|
247
|
+
end
|
248
|
+
end
|
249
|
+
|
228
250
|
# @param course_id [Integer]
|
229
251
|
# @param quiz_id [Integer]
|
230
252
|
def quiz(course_id:, quiz_id:)
|
@@ -348,6 +370,44 @@ module PlatformSdk
|
|
348
370
|
end
|
349
371
|
end
|
350
372
|
|
373
|
+
# @param course_id [Integer]
|
374
|
+
# @param module_id [Integer]
|
375
|
+
def put_relock_module(course_id:, module_id:)
|
376
|
+
uri = "api/v1/courses/#{course_id}/modules/#{module_id}/relock"
|
377
|
+
response = @connection.put(uri)
|
378
|
+
result = MultiJson.load response.body, symbolize_keys: true
|
379
|
+
handle_rate_limiting response
|
380
|
+
if success?(response.status)
|
381
|
+
result
|
382
|
+
else
|
383
|
+
error_message = parse_response_errors(result:, message: 'Error re-locking module')
|
384
|
+
raise CanvasClientError, error_message
|
385
|
+
end
|
386
|
+
end
|
387
|
+
|
388
|
+
# @param course_id [Integer]
|
389
|
+
# @param module_id [Integer]
|
390
|
+
# @param prerequisite_ids [Array<Integer>]
|
391
|
+
# @note prerequisite_ids should be a valid module_id, sending and empty array removes all prerequisites.
|
392
|
+
def put_module_prerequesites(course_id:, module_id:, prerequisite_ids:)
|
393
|
+
uri = "/api/v1/courses/#{course_id}/modules/#{module_id}"
|
394
|
+
response = @multipart_connection.put(uri) do |req|
|
395
|
+
req.headers['Content-Type'] = 'application/x-www-form-urlencoded'
|
396
|
+
req.body = { 'module[prerequisite_module_ids]' => prerequisite_ids }
|
397
|
+
end
|
398
|
+
handle_rate_limiting response
|
399
|
+
result = MultiJson.load response.body, symbolize_keys: true
|
400
|
+
if success?(response.status)
|
401
|
+
result
|
402
|
+
else
|
403
|
+
error_messages = String.new
|
404
|
+
result[:errors]&.each do |error|
|
405
|
+
error_messages << "#{error[:message]} "
|
406
|
+
end
|
407
|
+
raise "Error updating module prerequisite: #{error_messages}"
|
408
|
+
end
|
409
|
+
end
|
410
|
+
|
351
411
|
private
|
352
412
|
|
353
413
|
# @param headers [Faraday::Utils::Headers]
|
@@ -408,14 +468,14 @@ module PlatformSdk
|
|
408
468
|
# @param message [String]
|
409
469
|
def handle_post_response_errors(response, message)
|
410
470
|
result = MultiJson.load response.body, symbolize_keys: true
|
411
|
-
raise
|
412
|
-
raise
|
413
|
-
raise
|
471
|
+
raise LockedModuleItemError, "#{message}: #{result[:message]}" if response.status == 403
|
472
|
+
raise MissingModuleItemError, "#{message}: #{result[:message]}" if response.status == 404
|
473
|
+
raise CanvasClientError, parse_response_errors(message:, result:)
|
414
474
|
end
|
415
475
|
end
|
416
476
|
|
417
|
-
class
|
418
|
-
class
|
419
|
-
class
|
477
|
+
class CanvasClientError < StandardError; end
|
478
|
+
class LockedModuleItemError < CanvasClientError; end
|
479
|
+
class MissingModuleItemError < CanvasClientError; end
|
420
480
|
end
|
421
481
|
end
|
data/lib/platform_sdk/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: strongmind-platform-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.19.
|
4
|
+
version: 3.19.33
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Platform Team
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|