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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 743bf8f25edcef7c341af1d9598f40ac368e986cb93392f84f03b6424543c256
4
- data.tar.gz: 502e70faec7680e7dcb701c1db36e1d5f9be1327b3c672adb7d517538074ce09
3
+ metadata.gz: 220721704b3493784c6916cd60d381e82c6c581c0882de3afdce1bfeed4daa09
4
+ data.tar.gz: 6af5b9ec2711a28f202bcdde4f7b997633cfef6f3a0c500f272bec13d2ceb8a1
5
5
  SHA512:
6
- metadata.gz: a78544838ee3e0f0af687a97c39e200fe931e54199fa338bdaa0fbebbf3893e0caf64f21fa37c39b7b27473eb6a17dd2eedf3a69fd43658485ad6c97bc328f75
7
- data.tar.gz: 6342ec70213b1416ed58134d5c6049064e58f6780dfc7cffeb5b8c6d3cdf0479e66e07caba4d630a3569baae6e8f71d9a920a3ce70628ba491292494b88db6ae
6
+ metadata.gz: eef3bdb74b5b1d66a8db6032017c379cf125b47b3f1e9cbc1ff5398fef3c2548fb87c7cafae85d0f295f96debc8c09351b29827ea4bb3e12b01fe0ab9bb868da
7
+ data.tar.gz: 6dc5553e6b644e25a0b19e598e08d260e61648a91d5dc3873fcb4d64daa26dd322875808330d76d39d62b076b2948add4204aeb9feb39678adb3ae6ea93ec1d8
data/Gemfile CHANGED
@@ -10,6 +10,7 @@ gemspec
10
10
 
11
11
  gem "faraday"
12
12
  gem "faraday-retry"
13
+ gem "faraday-multipart"
13
14
  gem "jwt", "~> 1.5", ">= 1.5.4"
14
15
  gem "learnosity-sdk", "~> 0.2.2"
15
16
  gem "multi_json"
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- strongmind-platform-sdk (3.19.31)
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.1)
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.968.0)
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.201.5)
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.24.0)
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.14)
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 PlatformSdk::CanvasApiWrapper::Client::LockedModuleItemError, "#{message}: #{result[:message]}" if response.status == 403
412
- raise PlatformSdk::CanvasApiWrapper::Client::MissingModuleItemError, "#{message}: #{result[:message]}" if response.status == 404
413
- raise PlatformSdk::CanvasApiWrapper::Client::CanvasClientError, parse_response_errors(message:, result:)
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 Client::CanvasClientError < StandardError; end
418
- class Client::LockedModuleItemError < Client::CanvasClientError; end
419
- class Client::MissingModuleItemError < Client::CanvasClientError; end
461
+ class CanvasClientError < StandardError; end
462
+ class LockedModuleItemError < CanvasClientError; end
463
+ class MissingModuleItemError < CanvasClientError; end
420
464
  end
421
465
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PlatformSdk
4
- VERSION = '3.19.31'
4
+ VERSION = '3.19.32'
5
5
  end
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.31
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-08-26 00:00:00.000000000 Z
11
+ date: 2024-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday