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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 743bf8f25edcef7c341af1d9598f40ac368e986cb93392f84f03b6424543c256
4
- data.tar.gz: 502e70faec7680e7dcb701c1db36e1d5f9be1327b3c672adb7d517538074ce09
3
+ metadata.gz: e802eae6706b8b1575aea870fa85dc1f4d8d230ee76c7c4346168838f669ddfc
4
+ data.tar.gz: de43fb4b077de0eb7360f541d3c146f4c53102ac30337bf6591b4b76c7af3a85
5
5
  SHA512:
6
- metadata.gz: a78544838ee3e0f0af687a97c39e200fe931e54199fa338bdaa0fbebbf3893e0caf64f21fa37c39b7b27473eb6a17dd2eedf3a69fd43658485ad6c97bc328f75
7
- data.tar.gz: 6342ec70213b1416ed58134d5c6049064e58f6780dfc7cffeb5b8c6d3cdf0479e66e07caba4d630a3569baae6e8f71d9a920a3ce70628ba491292494b88db6ae
6
+ metadata.gz: ff125a6616567e8a2f03d66e49ecc90b776d1a38602a6dd233b70722abc63b5abd0d1d834e47dd2dc9890a00cf7f7b6aa27f66b90d68635d8ae5907e41944ff6
7
+ data.tar.gz: 80593443c2106b6db3c18792472a8292fe19b3bea3a2a1049ca2377083ff722fe1ac4a621adfc32a01f18807c2b886b22348d9e5f55cdc35da204a9bf848d7ea
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.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.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]
@@ -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}/users?per_page=#{PAGE_SIZE}"
213
- params = { 'enrollment_type[]' => 'student' }
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 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:)
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 Client::CanvasClientError < StandardError; end
418
- class Client::LockedModuleItemError < Client::CanvasClientError; end
419
- class Client::MissingModuleItemError < Client::CanvasClientError; end
477
+ class CanvasClientError < StandardError; end
478
+ class LockedModuleItemError < CanvasClientError; end
479
+ class MissingModuleItemError < CanvasClientError; end
420
480
  end
421
481
  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.33'
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.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-08-26 00:00:00.000000000 Z
11
+ date: 2024-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday