strongmind-platform-sdk 3.26.21 → 3.27.0
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.lock +21 -18
- data/lib/platform_sdk/learnosity_api/client.rb +57 -23
- data/lib/platform_sdk/learnosity_api.rb +4 -7
- data/lib/platform_sdk/version.rb +2 -2
- 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: 810243f0c080ad6d0d3de344f35be529792ed8f8b46a2e26ec73d848cc2ec55b
|
|
4
|
+
data.tar.gz: f194d6d594cd91f90dd5cb61ef73963d2616c8ed15ac34b5dfc976a2d37f14c2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0f8a9dcb3b3084e352f3dcac40ca9f2cc59ef951e8124483ac06790cd065f555a25f08b4018bc74d7e77b06083683783bf0e8cbf000f1af1a37f55f85fb0c022
|
|
7
|
+
data.tar.gz: 77cfa7f41f67166ff0107134aaf07ca0d44d3075cb44fd4c12ccb3f4903fe9ae117acc90f2530f28e99090b724f1cbb6d28dec23fe881fbbcd358cf8457a9f7a
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
strongmind-platform-sdk (3.
|
|
4
|
+
strongmind-platform-sdk (3.27.0)
|
|
5
5
|
asset_sync
|
|
6
6
|
aws-sdk-cloudwatch
|
|
7
7
|
aws-sdk-secretsmanager (~> 1.66)
|
|
@@ -128,13 +128,14 @@ GEM
|
|
|
128
128
|
bigdecimal
|
|
129
129
|
rexml
|
|
130
130
|
crass (1.0.6)
|
|
131
|
-
date (3.
|
|
131
|
+
date (3.5.1)
|
|
132
132
|
diff-lcs (1.5.1)
|
|
133
133
|
drb (2.2.1)
|
|
134
134
|
erubi (1.13.0)
|
|
135
135
|
ethon (0.16.0)
|
|
136
136
|
ffi (>= 1.15.0)
|
|
137
|
-
excon (1.
|
|
137
|
+
excon (1.3.0)
|
|
138
|
+
logger
|
|
138
139
|
factory_bot (6.4.6)
|
|
139
140
|
activesupport (>= 5.0.0)
|
|
140
141
|
faker (3.4.2)
|
|
@@ -149,8 +150,8 @@ GEM
|
|
|
149
150
|
ffi (1.17.0)
|
|
150
151
|
ffi (1.17.0-x86_64-darwin)
|
|
151
152
|
ffi (1.17.0-x86_64-linux-gnu)
|
|
152
|
-
fog-aws (3.
|
|
153
|
-
base64 (
|
|
153
|
+
fog-aws (3.33.0)
|
|
154
|
+
base64 (>= 0.2, < 0.4)
|
|
154
155
|
fog-core (~> 2.6)
|
|
155
156
|
fog-json (~> 1.1)
|
|
156
157
|
fog-xml (~> 0.1)
|
|
@@ -165,8 +166,9 @@ GEM
|
|
|
165
166
|
fog-xml (0.1.5)
|
|
166
167
|
fog-core
|
|
167
168
|
nokogiri (>= 1.5.11, < 2.0.0)
|
|
168
|
-
formatador (1.
|
|
169
|
-
|
|
169
|
+
formatador (1.2.2)
|
|
170
|
+
reline
|
|
171
|
+
globalid (1.3.0)
|
|
170
172
|
activesupport (>= 6.1)
|
|
171
173
|
hashdiff (1.1.0)
|
|
172
174
|
i18n (1.14.5)
|
|
@@ -185,17 +187,18 @@ GEM
|
|
|
185
187
|
loofah (2.22.0)
|
|
186
188
|
crass (~> 1.0.2)
|
|
187
189
|
nokogiri (>= 1.12.0)
|
|
188
|
-
mail (2.
|
|
190
|
+
mail (2.9.0)
|
|
191
|
+
logger
|
|
189
192
|
mini_mime (>= 0.1.1)
|
|
190
193
|
net-imap
|
|
191
194
|
net-pop
|
|
192
195
|
net-smtp
|
|
193
|
-
marcel (1.0
|
|
196
|
+
marcel (1.1.0)
|
|
194
197
|
method_source (1.1.0)
|
|
195
|
-
mime-types (3.
|
|
198
|
+
mime-types (3.7.0)
|
|
196
199
|
logger
|
|
197
|
-
mime-types-data (~> 3.
|
|
198
|
-
mime-types-data (3.2025.
|
|
200
|
+
mime-types-data (~> 3.2025, >= 3.2025.0507)
|
|
201
|
+
mime-types-data (3.2025.0924)
|
|
199
202
|
mini_mime (1.1.5)
|
|
200
203
|
mini_portile2 (2.8.7)
|
|
201
204
|
minitest (5.24.1)
|
|
@@ -203,16 +206,16 @@ GEM
|
|
|
203
206
|
mutex_m (0.2.0)
|
|
204
207
|
net-http (0.4.1)
|
|
205
208
|
uri
|
|
206
|
-
net-imap (0.5.
|
|
209
|
+
net-imap (0.5.12)
|
|
207
210
|
date
|
|
208
211
|
net-protocol
|
|
209
212
|
net-pop (0.1.2)
|
|
210
213
|
net-protocol
|
|
211
214
|
net-protocol (0.2.2)
|
|
212
215
|
timeout
|
|
213
|
-
net-smtp (0.5.
|
|
216
|
+
net-smtp (0.5.1)
|
|
214
217
|
net-protocol
|
|
215
|
-
nio4r (2.7.
|
|
218
|
+
nio4r (2.7.5)
|
|
216
219
|
nokogiri (1.16.7)
|
|
217
220
|
mini_portile2 (~> 2.8.2)
|
|
218
221
|
racc (~> 1.4)
|
|
@@ -339,20 +342,20 @@ GEM
|
|
|
339
342
|
ffi (~> 1.1)
|
|
340
343
|
thor (1.3.1)
|
|
341
344
|
timecop (0.9.10)
|
|
342
|
-
timeout (0.4.
|
|
345
|
+
timeout (0.4.4)
|
|
343
346
|
typhoeus (1.4.1)
|
|
344
347
|
ethon (>= 0.9.0)
|
|
345
348
|
tzinfo (2.0.6)
|
|
346
349
|
concurrent-ruby (~> 1.0)
|
|
347
350
|
unf (0.2.0)
|
|
348
351
|
unicode-display_width (2.5.0)
|
|
349
|
-
uri (
|
|
352
|
+
uri (1.1.1)
|
|
350
353
|
webmock (3.23.1)
|
|
351
354
|
addressable (>= 2.8.0)
|
|
352
355
|
crack (>= 0.3.2)
|
|
353
356
|
hashdiff (>= 0.4.0, < 2.0.0)
|
|
354
357
|
webrick (1.8.1)
|
|
355
|
-
websocket-driver (0.
|
|
358
|
+
websocket-driver (0.8.0)
|
|
356
359
|
base64
|
|
357
360
|
websocket-extensions (>= 0.1.0)
|
|
358
361
|
websocket-extensions (0.1.5)
|
|
@@ -1,47 +1,81 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require
|
|
4
|
-
require
|
|
2
|
+
|
|
3
|
+
require 'learnosity/sdk/request/init'
|
|
4
|
+
require 'securerandom'
|
|
5
5
|
|
|
6
6
|
module PlatformSdk
|
|
7
7
|
module LearnosityApi
|
|
8
|
-
# Learnosity::Client
|
|
9
8
|
class Client
|
|
10
|
-
attr_reader :credentials, :security
|
|
9
|
+
attr_reader :credentials, :security, :conn
|
|
11
10
|
|
|
12
11
|
def initialize(credentials)
|
|
13
12
|
@credentials = credentials
|
|
14
13
|
|
|
15
|
-
raise ArgumentError,
|
|
16
|
-
raise ArgumentError,
|
|
17
|
-
raise ArgumentError,
|
|
18
|
-
raise ArgumentError,
|
|
19
|
-
raise ArgumentError,
|
|
20
|
-
raise ArgumentError,
|
|
21
|
-
raise ArgumentError,
|
|
14
|
+
raise ArgumentError, 'learnosity_host is required' if @credentials[:learnosity_host].nil?
|
|
15
|
+
raise ArgumentError, 'learnosity_version is required' if @credentials[:learnosity_version].nil?
|
|
16
|
+
raise ArgumentError, 'service is required' if @credentials[:service].nil?
|
|
17
|
+
raise ArgumentError, 'consumer_key is required' if @credentials[:consumer_key].nil?
|
|
18
|
+
raise ArgumentError, 'consumer_secret is required' if @credentials[:consumer_secret].nil?
|
|
19
|
+
raise ArgumentError, 'organisation_id is required' if @credentials[:organisation_id].nil?
|
|
20
|
+
raise ArgumentError, 'domain is required' if @credentials[:domain].nil?
|
|
22
21
|
|
|
23
22
|
@security = {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
'consumer_key' => @credentials[:consumer_key],
|
|
24
|
+
'user_id' => @credentials[:user_id] || SecureRandom.uuid,
|
|
25
|
+
'domain' => @credentials[:domain]
|
|
27
26
|
}
|
|
28
27
|
|
|
28
|
+
@conn = build_connection
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
def sign(request)
|
|
32
|
-
|
|
31
|
+
def sign(request, action)
|
|
32
|
+
Learnosity::Sdk::Request::Init.new(
|
|
33
33
|
@credentials[:service],
|
|
34
34
|
@security,
|
|
35
35
|
@credentials[:consumer_secret],
|
|
36
|
-
request
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
request,
|
|
37
|
+
action
|
|
38
|
+
).generate
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
def post(path, request)
|
|
42
|
-
request[
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
request['organisation_id'] ||= @credentials[:organisation_id]
|
|
43
|
+
# to support backwards compatibility with the old client
|
|
44
|
+
request = sign(request, 'get') unless request.key?('security')
|
|
45
|
+
# will be removed in a future release
|
|
46
|
+
# when all clients have been updated to use the new sign method
|
|
47
|
+
conn.post(path, request)
|
|
48
|
+
rescue Faraday::Error => e
|
|
49
|
+
log_warn("Learnosity Data API Error: #{e.inspect}")
|
|
50
|
+
raise
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
private
|
|
54
|
+
|
|
55
|
+
def build_connection
|
|
56
|
+
base_uri = URI("https://#{@credentials[:learnosity_host]}/#{@credentials[:learnosity_version]}/")
|
|
57
|
+
|
|
58
|
+
Faraday.new(base_uri) do |f|
|
|
59
|
+
f.request :url_encoded
|
|
60
|
+
f.request :retry, retry_statuses: [429], methods: %i[post],
|
|
61
|
+
max: 3, interval: 2, backoff_factor: 2,
|
|
62
|
+
retry_block: method(:log_rate_limit_retry)
|
|
63
|
+
f.response :raise_error
|
|
64
|
+
f.response :json
|
|
65
|
+
f.adapter :net_http
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def log_warn(message)
|
|
70
|
+
if defined?(Rails) && Rails.respond_to?(:logger) && Rails.logger
|
|
71
|
+
Rails.logger.warn(message)
|
|
72
|
+
else
|
|
73
|
+
warn(message)
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def log_rate_limit_retry(env, _opts, retries, exc)
|
|
78
|
+
log_warn("Learnosity rate limited (attempt #{retries}): #{env.url.path} (#{exc&.message})")
|
|
45
79
|
end
|
|
46
80
|
end
|
|
47
81
|
end
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
require
|
|
3
|
+
require 'faraday'
|
|
4
|
+
require 'faraday/net_http'
|
|
5
|
+
require 'faraday/retry'
|
|
6
|
+
require 'platform_sdk/learnosity_api/client'
|
|
7
7
|
|
|
8
8
|
module PlatformSdk
|
|
9
9
|
module LearnosityApi
|
|
10
|
-
class Error < StandardError; end
|
|
11
|
-
|
|
12
|
-
|
|
13
10
|
end
|
|
14
11
|
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.
|
|
4
|
+
version: 3.27.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Platform Team
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-03
|
|
11
|
+
date: 2026-04-03 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|