workos 4.1.0 → 4.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +37 -0
- data/.github/workflows/release.yml +43 -0
- data/.rubocop.yml +8 -1
- data/Gemfile.lock +22 -69
- data/lib/workos/audit_log_export.rb +8 -31
- data/lib/workos/audit_logs.rb +0 -26
- data/lib/workos/authentication_factor_and_challenge.rb +0 -3
- data/lib/workos/authentication_response.rb +3 -6
- data/lib/workos/challenge.rb +9 -28
- data/lib/workos/client.rb +0 -41
- data/lib/workos/configuration.rb +0 -1
- data/lib/workos/connection.rb +11 -35
- data/lib/workos/directory.rb +10 -37
- data/lib/workos/directory_group.rb +9 -36
- data/lib/workos/directory_sync.rb +0 -21
- data/lib/workos/directory_user.rb +17 -51
- data/lib/workos/errors.rb +0 -16
- data/lib/workos/event.rb +5 -26
- data/lib/workos/events.rb +0 -7
- data/lib/workos/factor.rb +9 -28
- data/lib/workos/hash_provider.rb +0 -1
- data/lib/workos/impersonator.rb +0 -3
- data/lib/workos/invitation.rb +12 -37
- data/lib/workos/mfa.rb +0 -42
- data/lib/workos/organization.rb +8 -31
- data/lib/workos/organization_membership.rb +8 -27
- data/lib/workos/organizations.rb +0 -26
- data/lib/workos/passwordless.rb +0 -14
- data/lib/workos/portal.rb +1 -13
- data/lib/workos/profile.rb +12 -39
- data/lib/workos/profile_and_token.rb +1 -4
- data/lib/workos/refresh_authentication_response.rb +2 -5
- data/lib/workos/sso.rb +1 -43
- data/lib/workos/types/intent.rb +16 -0
- data/lib/workos/types/list_struct.rb +8 -5
- data/lib/workos/types/passwordless_session_struct.rb +10 -9
- data/lib/workos/types/provider.rb +15 -0
- data/lib/workos/types.rb +5 -23
- data/lib/workos/user.rb +10 -31
- data/lib/workos/user_and_token.rb +1 -4
- data/lib/workos/user_management.rb +36 -244
- data/lib/workos/user_response.rb +0 -3
- data/lib/workos/verify_challenge.rb +4 -18
- data/lib/workos/version.rb +1 -2
- data/lib/workos/webhook.rb +5 -26
- data/lib/workos/webhooks.rb +1 -38
- data/lib/workos.rb +0 -2
- data/spec/lib/workos/audit_logs_spec.rb +2 -3
- data/spec/lib/workos/configuration_spec.rb +0 -1
- data/spec/lib/workos/directory_sync_spec.rb +0 -1
- data/spec/lib/workos/directory_user_spec.rb +0 -1
- data/spec/lib/workos/event_spec.rb +0 -1
- data/spec/lib/workos/mfa_spec.rb +0 -1
- data/spec/lib/workos/organizations_spec.rb +0 -1
- data/spec/lib/workos/passwordless_spec.rb +0 -1
- data/spec/lib/workos/portal_spec.rb +0 -1
- data/spec/lib/workos/sso_spec.rb +0 -1
- data/spec/lib/workos/user_management_spec.rb +29 -1
- data/spec/lib/workos/webhooks_spec.rb +0 -1
- data/spec/spec_helper.rb +0 -9
- data/spec/support/fixtures/vcr_cassettes/user_management/revoke_session/not_found.yml +80 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/revoke_session/valid.yml +76 -0
- data/spec/support/shared_examples/client_spec.rb +0 -1
- data/workos.gemspec +1 -6
- metadata +15 -129
- data/.semaphore/rubygems.yml +0 -24
- data/.semaphore/semaphore.yml +0 -51
- data/bin/tapioca +0 -29
- data/codecov.yml +0 -12
- data/devbox.json +0 -18
- data/devbox.lock +0 -11
- data/lib/workos/types/audit_log_export_struct.rb +0 -17
- data/lib/workos/types/challenge_struct.rb +0 -18
- data/lib/workos/types/connection_struct.rb +0 -20
- data/lib/workos/types/directory_group_struct.rb +0 -19
- data/lib/workos/types/directory_struct.rb +0 -19
- data/lib/workos/types/directory_user_struct.rb +0 -26
- data/lib/workos/types/event_struct.rb +0 -15
- data/lib/workos/types/factor_struct.rb +0 -18
- data/lib/workos/types/intent_enum.rb +0 -17
- data/lib/workos/types/invitation_struct.rb +0 -20
- data/lib/workos/types/magic_auth_challenge_struct.rb +0 -12
- data/lib/workos/types/organization_membership_struct.rb +0 -16
- data/lib/workos/types/organization_struct.rb +0 -17
- data/lib/workos/types/profile_struct.rb +0 -21
- data/lib/workos/types/provider_enum.rb +0 -16
- data/lib/workos/types/user_struct.rb +0 -18
- data/lib/workos/types/verify_challenge_struct.rb +0 -13
- data/lib/workos/types/webhook_struct.rb +0 -15
- data/sorbet/config +0 -2
- data/sorbet/rbi/gems/addressable@2.8.0.rbi +0 -290
- data/sorbet/rbi/gems/ast@2.4.2.rbi +0 -54
- data/sorbet/rbi/gems/codecov@0.2.12.rbi +0 -55
- data/sorbet/rbi/gems/coderay@1.1.3.rbi +0 -8
- data/sorbet/rbi/gems/crack@0.4.5.rbi +0 -57
- data/sorbet/rbi/gems/diff-lcs@1.4.4.rbi +0 -185
- data/sorbet/rbi/gems/docile@1.3.5.rbi +0 -54
- data/sorbet/rbi/gems/hashdiff@1.0.1.rbi +0 -82
- data/sorbet/rbi/gems/json@2.5.1.rbi +0 -109
- data/sorbet/rbi/gems/method_source@1.0.0.rbi +0 -8
- data/sorbet/rbi/gems/parallel@1.20.1.rbi +0 -113
- data/sorbet/rbi/gems/parser@3.0.1.0.rbi +0 -1187
- data/sorbet/rbi/gems/pry@0.14.2.rbi +0 -8
- data/sorbet/rbi/gems/public_suffix@4.0.6.rbi +0 -146
- data/sorbet/rbi/gems/rainbow@3.0.0.rbi +0 -153
- data/sorbet/rbi/gems/rake@13.0.3.rbi +0 -807
- data/sorbet/rbi/gems/rbi@0.0.16.rbi +0 -2118
- data/sorbet/rbi/gems/regexp_parser@2.1.1.rbi +0 -1117
- data/sorbet/rbi/gems/rexml@3.2.5.rbi +0 -709
- data/sorbet/rbi/gems/rspec-core@3.9.3.rbi +0 -2467
- data/sorbet/rbi/gems/rspec-expectations@3.9.4.rbi +0 -1569
- data/sorbet/rbi/gems/rspec-mocks@3.9.1.rbi +0 -1493
- data/sorbet/rbi/gems/rspec-support@3.9.4.rbi +0 -511
- data/sorbet/rbi/gems/rspec@3.9.0.rbi +0 -38
- data/sorbet/rbi/gems/rubocop-ast@1.4.1.rbi +0 -1881
- data/sorbet/rbi/gems/rubocop@0.93.1.rbi +0 -11497
- data/sorbet/rbi/gems/ruby-progressbar@1.11.0.rbi +0 -405
- data/sorbet/rbi/gems/simplecov-html@0.12.3.rbi +0 -89
- data/sorbet/rbi/gems/simplecov@0.21.2.rbi +0 -577
- data/sorbet/rbi/gems/simplecov_json_formatter@0.1.2.rbi +0 -8
- data/sorbet/rbi/gems/spoom@1.1.15.rbi +0 -1549
- data/sorbet/rbi/gems/tapioca@0.7.3.rbi +0 -1718
- data/sorbet/rbi/gems/thor@1.2.1.rbi +0 -844
- data/sorbet/rbi/gems/unicode-display_width@1.7.0.rbi +0 -22
- data/sorbet/rbi/gems/unparser@0.6.2.rbi +0 -8
- data/sorbet/rbi/gems/vcr@5.0.0.rbi +0 -699
- data/sorbet/rbi/gems/webmock@3.12.2.rbi +0 -662
- data/sorbet/rbi/gems/yard-sorbet@0.8.0.rbi +0 -268
- data/sorbet/rbi/gems/yard@0.9.26.rbi +0 -4048
- data/sorbet/tapioca/config.yml +0 -13
- data/sorbet/tapioca/require.rb +0 -4
data/lib/workos/webhook.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# typed: true
|
3
2
|
|
4
3
|
module WorkOS
|
5
4
|
# The Webhook class provides a lightweight wrapper around
|
@@ -7,18 +6,16 @@ module WorkOS
|
|
7
6
|
# in user space, and is instantiated internally but exposed.
|
8
7
|
class Webhook
|
9
8
|
include HashProvider
|
10
|
-
extend T::Sig
|
11
9
|
|
12
10
|
attr_accessor :id, :event, :data, :created_at
|
13
11
|
|
14
|
-
sig { params(json: String).void }
|
15
12
|
def initialize(json)
|
16
|
-
|
13
|
+
hash = JSON.parse(json, symbolize_names: true)
|
17
14
|
|
18
|
-
@id =
|
19
|
-
@event =
|
20
|
-
@data =
|
21
|
-
@created_at =
|
15
|
+
@id = hash[:id]
|
16
|
+
@event = hash[:event]
|
17
|
+
@data = hash[:data]
|
18
|
+
@created_at = hash[:created_at]
|
22
19
|
end
|
23
20
|
|
24
21
|
def to_json(*)
|
@@ -29,23 +26,5 @@ module WorkOS
|
|
29
26
|
created_at: created_at,
|
30
27
|
}
|
31
28
|
end
|
32
|
-
|
33
|
-
private
|
34
|
-
|
35
|
-
sig do
|
36
|
-
params(
|
37
|
-
json_string: String,
|
38
|
-
).returns(WorkOS::Types::WebhookStruct)
|
39
|
-
end
|
40
|
-
def parse_json(json_string)
|
41
|
-
hash = JSON.parse(json_string, symbolize_names: true)
|
42
|
-
|
43
|
-
WorkOS::Types::WebhookStruct.new(
|
44
|
-
id: hash[:id],
|
45
|
-
event: hash[:event],
|
46
|
-
data: hash[:data],
|
47
|
-
created_at: hash[:created_at],
|
48
|
-
)
|
49
|
-
end
|
50
29
|
end
|
51
30
|
end
|
data/lib/workos/webhooks.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# typed: true
|
3
2
|
|
4
3
|
require 'openssl'
|
5
4
|
|
@@ -14,8 +13,6 @@ module WorkOS
|
|
14
13
|
#
|
15
14
|
module Webhooks
|
16
15
|
class << self
|
17
|
-
extend T::Sig
|
18
|
-
|
19
16
|
DEFAULT_TOLERANCE = 180
|
20
17
|
|
21
18
|
# Initializes an Event object from a JSON payload
|
@@ -37,14 +34,6 @@ module WorkOS
|
|
37
34
|
#
|
38
35
|
# @return [WorkOS::Webhook]
|
39
36
|
# rubocop:enable Layout/LineLength
|
40
|
-
sig do
|
41
|
-
params(
|
42
|
-
payload: String,
|
43
|
-
sig_header: String,
|
44
|
-
secret: String,
|
45
|
-
tolerance: Integer,
|
46
|
-
).returns(WorkOS::Webhook)
|
47
|
-
end
|
48
37
|
def construct_event(
|
49
38
|
payload:,
|
50
39
|
sig_header:,
|
@@ -74,14 +63,6 @@ module WorkOS
|
|
74
63
|
#
|
75
64
|
# @return Boolean
|
76
65
|
# rubocop:enable Layout/LineLength
|
77
|
-
sig do
|
78
|
-
params(
|
79
|
-
payload: String,
|
80
|
-
sig_header: String,
|
81
|
-
secret: String,
|
82
|
-
tolerance: Integer,
|
83
|
-
).returns(T::Boolean)
|
84
|
-
end
|
85
66
|
# rubocop:disable Metrics/AbcSize
|
86
67
|
def verify_header(
|
87
68
|
payload:,
|
@@ -134,11 +115,6 @@ module WorkOS
|
|
134
115
|
# => ['1626125972272', '80f7ab7efadc306eb5797c588cee9410da9be4416782b497bf1e1bf4175fb928']
|
135
116
|
#
|
136
117
|
# @return Array
|
137
|
-
sig do
|
138
|
-
params(
|
139
|
-
sig_header: String,
|
140
|
-
).returns([String, String])
|
141
|
-
end
|
142
118
|
def get_timestamp_and_signature_hash(
|
143
119
|
sig_header:
|
144
120
|
)
|
@@ -174,13 +150,6 @@ module WorkOS
|
|
174
150
|
#
|
175
151
|
# @return String
|
176
152
|
# rubocop:enable Layout/LineLength
|
177
|
-
sig do
|
178
|
-
params(
|
179
|
-
timestamp: String,
|
180
|
-
payload: String,
|
181
|
-
secret: String,
|
182
|
-
).returns(String)
|
183
|
-
end
|
184
153
|
def compute_signature(
|
185
154
|
timestamp:,
|
186
155
|
payload:,
|
@@ -193,19 +162,13 @@ module WorkOS
|
|
193
162
|
|
194
163
|
# Constant time string comparison to prevent timing attacks
|
195
164
|
# Code borrowed from ActiveSupport
|
196
|
-
sig do
|
197
|
-
params(
|
198
|
-
str_a: String,
|
199
|
-
str_b: String,
|
200
|
-
).returns(T::Boolean)
|
201
|
-
end
|
202
165
|
def secure_compare(
|
203
166
|
str_a:,
|
204
167
|
str_b:
|
205
168
|
)
|
206
169
|
return false unless str_a.bytesize == str_b.bytesize
|
207
170
|
|
208
|
-
l =
|
171
|
+
l = str_a.unpack("C#{str_a.bytesize}")
|
209
172
|
|
210
173
|
res = 0
|
211
174
|
str_b.each_byte { |byte| res |= byte ^ l.shift }
|
data/lib/workos.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# typed: false
|
3
2
|
|
4
3
|
describe WorkOS::AuditLogs do
|
5
4
|
it_behaves_like 'client'
|
@@ -48,7 +47,7 @@ describe WorkOS::AuditLogs do
|
|
48
47
|
idempotency_key: 'idempotency_key',
|
49
48
|
)
|
50
49
|
|
51
|
-
expect(response).to eq
|
50
|
+
expect(response.code).to eq '201'
|
52
51
|
end
|
53
52
|
end
|
54
53
|
end
|
@@ -61,7 +60,7 @@ describe WorkOS::AuditLogs do
|
|
61
60
|
event: valid_event,
|
62
61
|
)
|
63
62
|
|
64
|
-
expect(response).to eq
|
63
|
+
expect(response.code).to eq '201'
|
65
64
|
end
|
66
65
|
end
|
67
66
|
end
|
data/spec/lib/workos/mfa_spec.rb
CHANGED
data/spec/lib/workos/sso_spec.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# typed: false
|
3
2
|
|
4
3
|
describe WorkOS::UserManagement do
|
5
4
|
it_behaves_like 'client'
|
@@ -1146,4 +1145,33 @@ describe WorkOS::UserManagement do
|
|
1146
1145
|
end
|
1147
1146
|
end
|
1148
1147
|
end
|
1148
|
+
|
1149
|
+
describe '.revoke_session' do
|
1150
|
+
context 'with valid payload' do
|
1151
|
+
it 'revokes session' do
|
1152
|
+
VCR.use_cassette 'user_management/revoke_session/valid' do
|
1153
|
+
result = described_class.revoke_session(
|
1154
|
+
session_id: 'session_01HRX85ATNADY1GQ053AHRFFN6',
|
1155
|
+
)
|
1156
|
+
|
1157
|
+
expect(result).to be true
|
1158
|
+
end
|
1159
|
+
end
|
1160
|
+
end
|
1161
|
+
|
1162
|
+
context 'with a non-existant session' do
|
1163
|
+
it 'returns an error' do
|
1164
|
+
VCR.use_cassette 'user_management/revoke_session/not_found' do
|
1165
|
+
expect do
|
1166
|
+
described_class.revoke_session(
|
1167
|
+
session_id: 'session_01H5JQDV7R7ATEYZDEG0W5PRYS',
|
1168
|
+
)
|
1169
|
+
end.to raise_error(
|
1170
|
+
WorkOS::APIError,
|
1171
|
+
/Session not found/,
|
1172
|
+
)
|
1173
|
+
end
|
1174
|
+
end
|
1175
|
+
end
|
1176
|
+
end
|
1149
1177
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,13 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# typed: false
|
3
|
-
|
4
|
-
require 'simplecov'
|
5
|
-
SimpleCov.start
|
6
|
-
|
7
|
-
if ENV['CI'] == 'true'
|
8
|
-
require 'codecov'
|
9
|
-
SimpleCov.formatter = SimpleCov::Formatter::Codecov
|
10
|
-
end
|
11
2
|
|
12
3
|
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
13
4
|
$LOAD_PATH << File.join(File.dirname(__FILE__))
|
@@ -0,0 +1,80 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://api.workos.com/user_management/sessions/revoke
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: '{"session_id":"session_01H5JQDV7R7ATEYZDEG0W5PRYS"}'
|
9
|
+
headers:
|
10
|
+
Content-Type:
|
11
|
+
- application/json
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
+
Accept:
|
15
|
+
- "*/*"
|
16
|
+
User-Agent:
|
17
|
+
- WorkOS; ruby/3.1.4; arm64-darwin22; v4.2.0
|
18
|
+
Authorization:
|
19
|
+
- Bearer <API_KEY>
|
20
|
+
response:
|
21
|
+
status:
|
22
|
+
code: 404
|
23
|
+
message: Not Found
|
24
|
+
headers:
|
25
|
+
Date:
|
26
|
+
- Thu, 11 Apr 2024 22:36:42 GMT
|
27
|
+
Content-Type:
|
28
|
+
- application/json; charset=utf-8
|
29
|
+
Transfer-Encoding:
|
30
|
+
- chunked
|
31
|
+
Connection:
|
32
|
+
- keep-alive
|
33
|
+
Cf-Ray:
|
34
|
+
- 872e74fd9ed6db9e-LAX
|
35
|
+
Cf-Cache-Status:
|
36
|
+
- DYNAMIC
|
37
|
+
Etag:
|
38
|
+
- W/"91-9u3slgvENRDVFp/62vKalhPzVuw"
|
39
|
+
Strict-Transport-Security:
|
40
|
+
- max-age=15552000; includeSubDomains
|
41
|
+
Vary:
|
42
|
+
- Origin, Accept-Encoding
|
43
|
+
Access-Control-Allow-Credentials:
|
44
|
+
- 'true'
|
45
|
+
Content-Security-Policy:
|
46
|
+
- 'default-src ''self'';base-uri ''self'';block-all-mixed-content;font-src ''self''
|
47
|
+
https: data:;frame-ancestors ''self'';img-src ''self'' data:;object-src ''none'';script-src
|
48
|
+
''self'';script-src-attr ''none'';style-src ''self'' https: ''unsafe-inline'';upgrade-insecure-requests'
|
49
|
+
Expect-Ct:
|
50
|
+
- max-age=0
|
51
|
+
Referrer-Policy:
|
52
|
+
- no-referrer
|
53
|
+
X-Content-Type-Options:
|
54
|
+
- nosniff
|
55
|
+
X-Dns-Prefetch-Control:
|
56
|
+
- 'off'
|
57
|
+
X-Download-Options:
|
58
|
+
- noopen
|
59
|
+
X-Frame-Options:
|
60
|
+
- SAMEORIGIN
|
61
|
+
X-Permitted-Cross-Domain-Policies:
|
62
|
+
- none
|
63
|
+
X-Request-Id:
|
64
|
+
- bc0771a4-8d66-4b34-809c-d3d8976af390
|
65
|
+
X-Xss-Protection:
|
66
|
+
- '0'
|
67
|
+
Set-Cookie:
|
68
|
+
- __cf_bm=iJMFbMBT_gDvh2ZbVYwAWHii9wrMPSJJeFQ3sXKSNNw-1712875002-1.0.1.1-d0033NtW0ShwCrgulDZg60Nw0yfEROthaCZQWVIAnWbbmaoa5HDqSkl4DsECxoAaZNdoLWqOxi9YXtZx9FqVSA;
|
69
|
+
path=/; expires=Thu, 11-Apr-24 23:06:42 GMT; domain=.workos.com; HttpOnly;
|
70
|
+
Secure; SameSite=None
|
71
|
+
- __cfruid=c2a61e4869ba7669d8dd1d11a8e59bba189e21ba-1712875002; path=/; domain=.workos.com;
|
72
|
+
HttpOnly; Secure; SameSite=None
|
73
|
+
Server:
|
74
|
+
- cloudflare
|
75
|
+
body:
|
76
|
+
encoding: ASCII-8BIT
|
77
|
+
string: '{"message":"Session not found: ''session_01H5JQDV7R7ATEYZDEG0W5PRYS''.","code":"entity_not_found","entity_id":"session_01H5JQDV7R7ATEYZDEG0W5PRYS"}'
|
78
|
+
http_version:
|
79
|
+
recorded_at: Thu, 11 Apr 2024 22:36:42 GMT
|
80
|
+
recorded_with: VCR 5.0.0
|
@@ -0,0 +1,76 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://api.workos.com/user_management/sessions/revoke
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: '{"session_id":"session_01HRX85ATNADY1GQ053AHRFFN6"}'
|
9
|
+
headers:
|
10
|
+
Content-Type:
|
11
|
+
- application/json
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
+
Accept:
|
15
|
+
- "*/*"
|
16
|
+
User-Agent:
|
17
|
+
- WorkOS; ruby/3.1.4; arm64-darwin22; v4.2.0
|
18
|
+
Authorization:
|
19
|
+
- Bearer <API_KEY>
|
20
|
+
response:
|
21
|
+
status:
|
22
|
+
code: 200
|
23
|
+
message: OK
|
24
|
+
headers:
|
25
|
+
Date:
|
26
|
+
- Thu, 11 Apr 2024 22:36:42 GMT
|
27
|
+
Transfer-Encoding:
|
28
|
+
- chunked
|
29
|
+
Connection:
|
30
|
+
- keep-alive
|
31
|
+
Cf-Ray:
|
32
|
+
- 872e74fc2ee3092d-LAX
|
33
|
+
Cf-Cache-Status:
|
34
|
+
- DYNAMIC
|
35
|
+
Strict-Transport-Security:
|
36
|
+
- max-age=15552000; includeSubDomains
|
37
|
+
Vary:
|
38
|
+
- Origin, Accept-Encoding
|
39
|
+
Access-Control-Allow-Credentials:
|
40
|
+
- 'true'
|
41
|
+
Content-Security-Policy:
|
42
|
+
- 'default-src ''self'';base-uri ''self'';block-all-mixed-content;font-src ''self''
|
43
|
+
https: data:;frame-ancestors ''self'';img-src ''self'' data:;object-src ''none'';script-src
|
44
|
+
''self'';script-src-attr ''none'';style-src ''self'' https: ''unsafe-inline'';upgrade-insecure-requests'
|
45
|
+
Expect-Ct:
|
46
|
+
- max-age=0
|
47
|
+
Referrer-Policy:
|
48
|
+
- no-referrer
|
49
|
+
X-Content-Type-Options:
|
50
|
+
- nosniff
|
51
|
+
X-Dns-Prefetch-Control:
|
52
|
+
- 'off'
|
53
|
+
X-Download-Options:
|
54
|
+
- noopen
|
55
|
+
X-Frame-Options:
|
56
|
+
- SAMEORIGIN
|
57
|
+
X-Permitted-Cross-Domain-Policies:
|
58
|
+
- none
|
59
|
+
X-Request-Id:
|
60
|
+
- 1b04e560-4438-40ba-97d2-05ae571aeedf
|
61
|
+
X-Xss-Protection:
|
62
|
+
- '0'
|
63
|
+
Set-Cookie:
|
64
|
+
- __cf_bm=lXssAzjuk1ajbWnDLtD_SUYIufESNBd9WVxCY8MCxJU-1712875002-1.0.1.1-oBbEhifco.kAMIrc30VrsrzW8tP4OpouniBD3jTd.5UowyS_IWs6ah59yKeFO9X6IqMLjlJt6n5O9lTpN0.2fw;
|
65
|
+
path=/; expires=Thu, 11-Apr-24 23:06:42 GMT; domain=.workos.com; HttpOnly;
|
66
|
+
Secure; SameSite=None
|
67
|
+
- __cfruid=c2a61e4869ba7669d8dd1d11a8e59bba189e21ba-1712875002; path=/; domain=.workos.com;
|
68
|
+
HttpOnly; Secure; SameSite=None
|
69
|
+
Server:
|
70
|
+
- cloudflare
|
71
|
+
body:
|
72
|
+
encoding: UTF-8
|
73
|
+
string: ''
|
74
|
+
http_version:
|
75
|
+
recorded_at: Thu, 11 Apr 2024 22:36:42 GMT
|
76
|
+
recorded_with: VCR 5.0.0
|
data/workos.gemspec
CHANGED
@@ -21,16 +21,11 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
22
22
|
spec.require_paths = ['lib']
|
23
23
|
|
24
|
-
spec.add_dependency 'sorbet-runtime', '~> 0.5'
|
25
|
-
|
26
24
|
spec.add_development_dependency 'bundler', '>= 2.0.1'
|
27
|
-
spec.add_development_dependency 'codecov', '~> 0.2.8'
|
28
25
|
spec.add_development_dependency 'rspec', '~> 3.9.0'
|
29
26
|
spec.add_development_dependency 'rubocop', '~> 0.77'
|
30
|
-
spec.add_development_dependency 'sorbet', '~> 0.5'
|
31
|
-
spec.add_development_dependency 'tapioca'
|
32
27
|
spec.add_development_dependency 'vcr', '~> 5.0.0'
|
33
28
|
spec.add_development_dependency 'webmock'
|
34
29
|
|
35
|
-
spec.required_ruby_version = '>= 2.
|
30
|
+
spec.required_ruby_version = '>= 2.7'
|
36
31
|
end
|