strongmind-platform-sdk 3.19.31 → 3.19.32
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 +51 -7
- 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: 220721704b3493784c6916cd60d381e82c6c581c0882de3afdce1bfeed4daa09
|
4
|
+
data.tar.gz: 6af5b9ec2711a28f202bcdde4f7b997633cfef6f3a0c500f272bec13d2ceb8a1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eef3bdb74b5b1d66a8db6032017c379cf125b47b3f1e9cbc1ff5398fef3c2548fb87c7cafae85d0f295f96debc8c09351b29827ea4bb3e12b01fe0ab9bb868da
|
7
|
+
data.tar.gz: 6dc5553e6b644e25a0b19e598e08d260e61648a91d5dc3873fcb4d64daa26dd322875808330d76d39d62b076b2948add4204aeb9feb39678adb3ae6ea93ec1d8
|
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.32)
|
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]
|
@@ -348,6 +354,44 @@ module PlatformSdk
|
|
348
354
|
end
|
349
355
|
end
|
350
356
|
|
357
|
+
# @param course_id [Integer]
|
358
|
+
# @param module_id [Integer]
|
359
|
+
def put_relock_module(course_id:, module_id:)
|
360
|
+
uri = "api/v1/courses/#{course_id}/modules/#{module_id}/relock"
|
361
|
+
response = @connection.put(uri)
|
362
|
+
result = MultiJson.load response.body, symbolize_keys: true
|
363
|
+
handle_rate_limiting response
|
364
|
+
if success?(response.status)
|
365
|
+
result
|
366
|
+
else
|
367
|
+
error_message = parse_response_errors(result:, message: 'Error re-locking module')
|
368
|
+
raise CanvasClientError, error_message
|
369
|
+
end
|
370
|
+
end
|
371
|
+
|
372
|
+
# @param course_id [Integer]
|
373
|
+
# @param module_id [Integer]
|
374
|
+
# @param prerequisite_ids [Array<Integer>]
|
375
|
+
# @note prerequisite_ids should be a valid module_id, sending and empty array removes all prerequisites.
|
376
|
+
def put_module_prerequesites(course_id:, module_id:, prerequisite_ids:)
|
377
|
+
uri = "/api/v1/courses/#{course_id}/modules/#{module_id}"
|
378
|
+
response = @multipart_connection.put(uri) do |req|
|
379
|
+
req.headers['Content-Type'] = 'application/x-www-form-urlencoded'
|
380
|
+
req.body = { 'module[prerequisite_module_ids]' => prerequisite_ids }
|
381
|
+
end
|
382
|
+
handle_rate_limiting response
|
383
|
+
result = MultiJson.load response.body, symbolize_keys: true
|
384
|
+
if success?(response.status)
|
385
|
+
result
|
386
|
+
else
|
387
|
+
error_messages = String.new
|
388
|
+
result[:errors]&.each do |error|
|
389
|
+
error_messages << "#{error[:message]} "
|
390
|
+
end
|
391
|
+
raise "Error updating module prerequisite: #{error_messages}"
|
392
|
+
end
|
393
|
+
end
|
394
|
+
|
351
395
|
private
|
352
396
|
|
353
397
|
# @param headers [Faraday::Utils::Headers]
|
@@ -408,14 +452,14 @@ module PlatformSdk
|
|
408
452
|
# @param message [String]
|
409
453
|
def handle_post_response_errors(response, message)
|
410
454
|
result = MultiJson.load response.body, symbolize_keys: true
|
411
|
-
raise
|
412
|
-
raise
|
413
|
-
raise
|
455
|
+
raise LockedModuleItemError, "#{message}: #{result[:message]}" if response.status == 403
|
456
|
+
raise MissingModuleItemError, "#{message}: #{result[:message]}" if response.status == 404
|
457
|
+
raise CanvasClientError, parse_response_errors(message:, result:)
|
414
458
|
end
|
415
459
|
end
|
416
460
|
|
417
|
-
class
|
418
|
-
class
|
419
|
-
class
|
461
|
+
class CanvasClientError < StandardError; end
|
462
|
+
class LockedModuleItemError < CanvasClientError; end
|
463
|
+
class MissingModuleItemError < CanvasClientError; end
|
420
464
|
end
|
421
465
|
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.32
|
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-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|