safetykit 0.13.0 → 0.13.1

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: 44064e825e38b95c54fd73f964e5e878dd681f50c72a1ec052b319aa15b116e5
4
- data.tar.gz: 921ca56e7fd091b3815cc850ea738c965eb5e285e24da49b08e20bc3f7db0184
3
+ metadata.gz: 9d3e22c6034377a433089f18c5a408d81f894f42a5eeeeaa13cb69bbcac81199
4
+ data.tar.gz: a70d67b29c010cdf2084fa4947cf01c8892860cc855333b96894a97441bbd95a
5
5
  SHA512:
6
- metadata.gz: 7ce302f6c0151ef5ecdae2ee4986dd00ea8cac75c7c15eee48126ac76dc3a93bb78bffad7535aa8dcb8e4550bd896b655dbaaa657fb0df24b46f9a58a2ea760d
7
- data.tar.gz: 0da8c85c43f508889bbd5d29e98329c6e0bad4a80ddabf6bf87a154db8cd23ea5a7a314a189ac7b74714c6b3e578bc30967380f7d991bee9e010b946e1bf36c8
6
+ metadata.gz: 539f52387ecc462d3e88ad6bcbfbeb516ed5dc265590107735d889d1fd363b40f584674917ca971f567bfa5800c0ce9448f359155ff3cf8b91b6955384f47ad9
7
+ data.tar.gz: f63ac91cf0e2dd7efa4751e1dc761c6c81f4e66189c0a5df8d2c155e3e1de966bf2137d27684aa3a09af15ad78c643782d41a0adfc048bed72e138ffa591eea3
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.13.1 (2026-06-02)
4
+
5
+ Full Changelog: [v0.13.0...v0.13.1](https://github.com/GetSafetyKit/safetykit-ruby/compare/v0.13.0...v0.13.1)
6
+
3
7
  ## 0.13.0 (2026-06-01)
4
8
 
5
9
  Full Changelog: [v0.12.0...v0.13.0](https://github.com/GetSafetyKit/safetykit-ruby/compare/v0.12.0...v0.13.0)
data/README.md CHANGED
@@ -17,7 +17,7 @@ To use this gem, install via Bundler by adding the following to your application
17
17
  <!-- x-release-please-start-version -->
18
18
 
19
19
  ```ruby
20
- gem "safetykit", "~> 0.13.0"
20
+ gem "safetykit", "~> 0.13.1"
21
21
  ```
22
22
 
23
23
  <!-- x-release-please-end -->
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "uri"
4
+
3
5
  module SafetyKit
4
6
  module Resources
5
7
  # Beta. Create browser-safe Webapp SDK session tokens from authenticated
@@ -27,13 +29,15 @@ module SafetyKit
27
29
  def create_session(params)
28
30
  parsed, options = SafetyKit::ClientSessionCreateSessionParams.dump_request(params)
29
31
  path = @client.base_url_overridden? ? "v1/sessions" : "https://diagnostics.safetykit.com/v1/sessions"
30
- @client.request(
32
+ response = @client.request(
31
33
  method: :post,
32
34
  path: path,
33
35
  body: parsed[:body],
34
36
  model: SafetyKit::Models::ClientSessionCreateSessionResponse,
35
37
  options: options
36
38
  )
39
+ validate_create_session_response!(response)
40
+ response
37
41
  end
38
42
 
39
43
  # @api private
@@ -42,6 +46,64 @@ module SafetyKit
42
46
  def initialize(client:)
43
47
  @client = client
44
48
  end
49
+
50
+ private
51
+
52
+ def validate_create_session_response!(response)
53
+ unless response.is_a?(SafetyKit::Models::ClientSessionCreateSessionResponse)
54
+ raise_invalid_create_session_response!(
55
+ method: :create_session,
56
+ target: SafetyKit::Models::ClientSessionCreateSessionResponse,
57
+ value: response,
58
+ message: "must be a client session create response"
59
+ )
60
+ end
61
+
62
+ validate_non_empty_string!(response, :session_token)
63
+ validate_non_empty_string!(response, :sdk_script_url)
64
+ validate_https_url!(response[:sdk_script_url])
65
+ end
66
+
67
+ def validate_non_empty_string!(response, field)
68
+ value = response[field]
69
+ return if value.is_a?(String) && !value.strip.empty?
70
+
71
+ raise_invalid_create_session_response!(
72
+ method: field,
73
+ target: String,
74
+ value: value,
75
+ message: "must be a non-empty string"
76
+ )
77
+ end
78
+
79
+ def validate_https_url!(value)
80
+ uri = URI.parse(value)
81
+ return if uri.is_a?(URI::HTTPS) && uri.host && !uri.host.empty?
82
+
83
+ raise_invalid_create_session_response!(
84
+ method: :sdk_script_url,
85
+ target: URI::HTTPS,
86
+ value: value,
87
+ message: "must be an absolute HTTPS URL"
88
+ )
89
+ rescue URI::InvalidURIError => e
90
+ raise_invalid_create_session_response!(
91
+ method: :sdk_script_url,
92
+ target: URI::HTTPS,
93
+ value: value,
94
+ cause: e
95
+ )
96
+ end
97
+
98
+ def raise_invalid_create_session_response!(method:, target:, value:, message: nil, cause: nil)
99
+ raise SafetyKit::Errors::ConversionError.new(
100
+ on: SafetyKit::Models::ClientSessionCreateSessionResponse,
101
+ method: method,
102
+ target: target,
103
+ value: value,
104
+ cause: cause || ArgumentError.new(message)
105
+ )
106
+ end
45
107
  end
46
108
  end
47
109
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SafetyKit
4
- VERSION = "0.13.0"
4
+ VERSION = "0.13.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: safetykit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.13.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Safetykit
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-06-01 00:00:00.000000000 Z
11
+ date: 2026-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cgi