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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f18e38578e2afcc1a18b6141954b28c4c58a7ea9ae46baa58eed157a452c1a8b
|
4
|
+
data.tar.gz: 5e5036dfbad3f0fd25f1cb2368144692cd40f18d3668ea43be442ffa62f7b3d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 50833c139a6ad2f9dcfffb74a74e38b7add1edfb3b76b63b0b1e7d2cd5673cc837a9abc35ba05998392aea10907acf80c65c9144abde217b1671aa3c65557a23
|
7
|
+
data.tar.gz: c4ad2de56c7fd7b5da14b849295e2e9d4921b33c0ad6080d47387ff09e4a91c973e7a42ba648869a14280bad15eab3640736652d1b9916d333b24c842ef0c136
|
@@ -0,0 +1,37 @@
|
|
1
|
+
name: CI
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- 'main'
|
7
|
+
pull_request: {}
|
8
|
+
|
9
|
+
defaults:
|
10
|
+
run:
|
11
|
+
shell: bash
|
12
|
+
|
13
|
+
jobs:
|
14
|
+
test:
|
15
|
+
name: Test Ruby ${{ matrix.ruby }}
|
16
|
+
runs-on: ubuntu-latest
|
17
|
+
strategy:
|
18
|
+
matrix:
|
19
|
+
ruby:
|
20
|
+
- '2.7'
|
21
|
+
- '3.0'
|
22
|
+
- '3.1'
|
23
|
+
- '3.2'
|
24
|
+
steps:
|
25
|
+
- uses: actions/checkout@v4
|
26
|
+
- uses: ruby/setup-ruby@v1
|
27
|
+
with:
|
28
|
+
ruby-version: ${{ matrix.ruby }}
|
29
|
+
bundler-cache: true
|
30
|
+
|
31
|
+
- name: Rubocop
|
32
|
+
run: |
|
33
|
+
bundle exec rubocop
|
34
|
+
|
35
|
+
- name: Spec
|
36
|
+
run: |
|
37
|
+
bundle exec rspec
|
@@ -0,0 +1,43 @@
|
|
1
|
+
name: Release
|
2
|
+
|
3
|
+
on:
|
4
|
+
# Support manually pushing a new release
|
5
|
+
workflow_dispatch: {}
|
6
|
+
# Trigger when a release is published
|
7
|
+
release:
|
8
|
+
types: [released]
|
9
|
+
|
10
|
+
defaults:
|
11
|
+
run:
|
12
|
+
shell: bash
|
13
|
+
|
14
|
+
jobs:
|
15
|
+
test:
|
16
|
+
name: Publish to RubyGems
|
17
|
+
runs-on: ubuntu-latest
|
18
|
+
steps:
|
19
|
+
- uses: actions/checkout@v4
|
20
|
+
- uses: ruby/setup-ruby@v1
|
21
|
+
with:
|
22
|
+
ruby-version: '3.2'
|
23
|
+
bundler-cache: true
|
24
|
+
|
25
|
+
- name: Spec
|
26
|
+
run: |
|
27
|
+
bundle exec rspec
|
28
|
+
|
29
|
+
- name: Publish
|
30
|
+
env:
|
31
|
+
RUBYGEMS_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
|
32
|
+
run: |
|
33
|
+
mkdir -p ~/.gem
|
34
|
+
|
35
|
+
cat << EOF > ~/.gem/credentials
|
36
|
+
---
|
37
|
+
:rubygems_api_key: ${RUBYGEMS_API_KEY}
|
38
|
+
EOF
|
39
|
+
|
40
|
+
chmod 0600 ~/.gem/credentials
|
41
|
+
|
42
|
+
bundle exec gem build workos --output=release.gem
|
43
|
+
bundle exec gem push release.gem
|
data/.rubocop.yml
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
# Disabling due to conflict with Ruby 2.7/3.1
|
2
|
+
Layout/BlockAlignment:
|
3
|
+
Enabled: false
|
1
4
|
Layout/DotPosition:
|
2
5
|
EnforcedStyle: trailing
|
3
6
|
Layout/EmptyLineAfterMagicComment:
|
@@ -16,9 +19,13 @@ Metrics/ModuleLength:
|
|
16
19
|
Max: 200
|
17
20
|
Metrics/ParameterLists:
|
18
21
|
Max: 6
|
22
|
+
Naming/ConstantName:
|
23
|
+
Exclude:
|
24
|
+
- 'lib/workos/user_management.rb'
|
25
|
+
- 'lib/workos/types/*.rb'
|
19
26
|
Style/TrailingCommaInArguments:
|
20
27
|
EnforcedStyleForMultiline: 'consistent_comma'
|
21
28
|
Style/TrailingCommaInHashLiteral:
|
22
29
|
EnforcedStyleForMultiline: 'consistent_comma'
|
23
30
|
AllCops:
|
24
|
-
TargetRubyVersion: 2.
|
31
|
+
TargetRubyVersion: 2.7
|
data/Gemfile.lock
CHANGED
@@ -1,41 +1,29 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
workos (4.1
|
5
|
-
sorbet-runtime (~> 0.5)
|
4
|
+
workos (4.2.1)
|
6
5
|
|
7
6
|
GEM
|
8
7
|
remote: https://rubygems.org/
|
9
8
|
specs:
|
10
|
-
addressable (2.8.
|
11
|
-
public_suffix (>= 2.0.2, <
|
9
|
+
addressable (2.8.6)
|
10
|
+
public_suffix (>= 2.0.2, < 6.0)
|
12
11
|
ast (2.4.2)
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
coderay (1.1.3)
|
17
|
-
crack (0.4.5)
|
12
|
+
bigdecimal (3.1.7)
|
13
|
+
crack (1.0.0)
|
14
|
+
bigdecimal
|
18
15
|
rexml
|
19
|
-
diff-lcs (1.
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
method_source (1.0.0)
|
24
|
-
parallel (1.20.1)
|
25
|
-
parser (3.0.1.0)
|
16
|
+
diff-lcs (1.5.1)
|
17
|
+
hashdiff (1.1.0)
|
18
|
+
parallel (1.24.0)
|
19
|
+
parser (3.3.0.5)
|
26
20
|
ast (~> 2.4.1)
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
ast
|
34
|
-
parser (>= 2.6.4.0)
|
35
|
-
sorbet-runtime (>= 0.5.9204)
|
36
|
-
unparser
|
37
|
-
regexp_parser (2.1.1)
|
38
|
-
rexml (3.2.5)
|
21
|
+
racc
|
22
|
+
public_suffix (5.0.4)
|
23
|
+
racc (1.7.3)
|
24
|
+
rainbow (3.1.1)
|
25
|
+
regexp_parser (2.9.0)
|
26
|
+
rexml (3.2.6)
|
39
27
|
rspec (3.9.0)
|
40
28
|
rspec-core (~> 3.9.0)
|
41
29
|
rspec-expectations (~> 3.9.0)
|
@@ -58,58 +46,23 @@ GEM
|
|
58
46
|
rubocop-ast (>= 0.6.0)
|
59
47
|
ruby-progressbar (~> 1.7)
|
60
48
|
unicode-display_width (>= 1.4.0, < 2.0)
|
61
|
-
rubocop-ast (1.
|
62
|
-
parser (>=
|
63
|
-
ruby-progressbar (1.
|
64
|
-
|
65
|
-
docile (~> 1.1)
|
66
|
-
simplecov-html (~> 0.11)
|
67
|
-
simplecov_json_formatter (~> 0.1)
|
68
|
-
simplecov-html (0.12.3)
|
69
|
-
simplecov_json_formatter (0.1.2)
|
70
|
-
sorbet (0.5.11132)
|
71
|
-
sorbet-static (= 0.5.11132)
|
72
|
-
sorbet-runtime (0.5.10484)
|
73
|
-
sorbet-static (0.5.11132-universal-darwin)
|
74
|
-
sorbet-static (0.5.11132-x86_64-linux)
|
75
|
-
spoom (1.1.15)
|
76
|
-
sorbet (>= 0.5.10187)
|
77
|
-
sorbet-runtime (>= 0.5.9204)
|
78
|
-
thor (>= 0.19.2)
|
79
|
-
tapioca (0.7.3)
|
80
|
-
bundler (>= 1.17.3)
|
81
|
-
pry (>= 0.12.2)
|
82
|
-
rbi (~> 0.0.0, >= 0.0.14)
|
83
|
-
sorbet-runtime (>= 0.5.9204)
|
84
|
-
sorbet-static (>= 0.5.9204)
|
85
|
-
spoom (~> 1.1.0, >= 1.1.11)
|
86
|
-
thor (>= 1.2.0)
|
87
|
-
yard-sorbet
|
88
|
-
thor (1.2.1)
|
89
|
-
unicode-display_width (1.7.0)
|
90
|
-
unparser (0.6.2)
|
91
|
-
diff-lcs (~> 1.3)
|
92
|
-
parser (>= 3.0.0)
|
49
|
+
rubocop-ast (1.31.2)
|
50
|
+
parser (>= 3.3.0.4)
|
51
|
+
ruby-progressbar (1.13.0)
|
52
|
+
unicode-display_width (1.8.0)
|
93
53
|
vcr (5.0.0)
|
94
|
-
webmock (3.
|
95
|
-
addressable (>= 2.
|
54
|
+
webmock (3.23.0)
|
55
|
+
addressable (>= 2.8.0)
|
96
56
|
crack (>= 0.3.2)
|
97
57
|
hashdiff (>= 0.4.0, < 2.0.0)
|
98
|
-
yard (0.9.26)
|
99
|
-
yard-sorbet (0.8.0)
|
100
|
-
sorbet-runtime (>= 0.5)
|
101
|
-
yard (>= 0.9)
|
102
58
|
|
103
59
|
PLATFORMS
|
104
60
|
ruby
|
105
61
|
|
106
62
|
DEPENDENCIES
|
107
63
|
bundler (>= 2.0.1)
|
108
|
-
codecov (~> 0.2.8)
|
109
64
|
rspec (~> 3.9.0)
|
110
65
|
rubocop (~> 0.77)
|
111
|
-
sorbet (~> 0.5)
|
112
|
-
tapioca
|
113
66
|
vcr (~> 5.0.0)
|
114
67
|
webmock
|
115
68
|
workos!
|
@@ -1,24 +1,21 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# typed: true
|
3
2
|
|
4
3
|
module WorkOS
|
5
4
|
# The AuditLogExport class represents the WorkOS entity created when exporting Audit Log Events.
|
6
5
|
class AuditLogExport
|
7
6
|
include HashProvider
|
8
|
-
extend T::Sig
|
9
7
|
|
10
8
|
attr_accessor :object, :id, :state, :url, :created_at, :updated_at
|
11
9
|
|
12
|
-
sig { params(json: String).void }
|
13
10
|
def initialize(json)
|
14
|
-
|
15
|
-
|
16
|
-
@object =
|
17
|
-
@id =
|
18
|
-
@state =
|
19
|
-
@url =
|
20
|
-
@created_at =
|
21
|
-
@updated_at =
|
11
|
+
hash = JSON.parse(json, symbolize_names: true)
|
12
|
+
|
13
|
+
@object = hash[:object]
|
14
|
+
@id = hash[:id]
|
15
|
+
@state = hash[:state]
|
16
|
+
@url = hash[:url]
|
17
|
+
@created_at = hash[:created_at]
|
18
|
+
@updated_at = hash[:updated_at]
|
22
19
|
end
|
23
20
|
|
24
21
|
def to_json(*)
|
@@ -31,25 +28,5 @@ module WorkOS
|
|
31
28
|
updated_at: updated_at,
|
32
29
|
}
|
33
30
|
end
|
34
|
-
|
35
|
-
private
|
36
|
-
|
37
|
-
sig do
|
38
|
-
params(
|
39
|
-
json_string: String,
|
40
|
-
).returns(WorkOS::Types::AuditLogExportStruct)
|
41
|
-
end
|
42
|
-
def parse_json(json_string)
|
43
|
-
hash = JSON.parse(json_string, symbolize_names: true)
|
44
|
-
|
45
|
-
WorkOS::Types::AuditLogExportStruct.new(
|
46
|
-
object: hash[:object],
|
47
|
-
id: hash[:id],
|
48
|
-
state: hash[:state],
|
49
|
-
url: hash[:url],
|
50
|
-
created_at: hash[:created_at],
|
51
|
-
updated_at: hash[:updated_at],
|
52
|
-
)
|
53
|
-
end
|
54
31
|
end
|
55
32
|
end
|
data/lib/workos/audit_logs.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# typed: true
|
3
2
|
|
4
3
|
require 'net/http'
|
5
4
|
require 'uri'
|
@@ -9,7 +8,6 @@ module WorkOS
|
|
9
8
|
# WorkOS Audit Logs platform. You'll need a valid API key.
|
10
9
|
module AuditLogs
|
11
10
|
class << self
|
12
|
-
extend T::Sig
|
13
11
|
include Client
|
14
12
|
|
15
13
|
# Create an Audit Log Event.
|
@@ -19,13 +17,6 @@ module WorkOS
|
|
19
17
|
# @param [String] idempotency_key An idempotency key
|
20
18
|
#
|
21
19
|
# @return [nil]
|
22
|
-
sig do
|
23
|
-
params(
|
24
|
-
organization: String,
|
25
|
-
event: Hash,
|
26
|
-
idempotency_key: T.nilable(String),
|
27
|
-
).void
|
28
|
-
end
|
29
20
|
def create_event(organization:, event:, idempotency_key: nil)
|
30
21
|
request = post_request(
|
31
22
|
path: '/audit_logs/events',
|
@@ -52,18 +43,6 @@ module WorkOS
|
|
52
43
|
# @param [Array<String>] targets A list of target types to filter by
|
53
44
|
#
|
54
45
|
# @return [WorkOS::AuditLogExport]
|
55
|
-
sig do
|
56
|
-
params(
|
57
|
-
organization: String,
|
58
|
-
range_start: String,
|
59
|
-
range_end: String,
|
60
|
-
actions: T.nilable(T::Array[String]),
|
61
|
-
actors: T.nilable(T::Array[String]),
|
62
|
-
targets: T.nilable(T::Array[String]),
|
63
|
-
actor_names: T.nilable(T::Array[String]),
|
64
|
-
actor_ids: T.nilable(T::Array[String]),
|
65
|
-
).returns(WorkOS::AuditLogExport)
|
66
|
-
end
|
67
46
|
def create_export(organization:, range_start:, range_end:, actions: nil, # rubocop:disable Metrics/ParameterLists
|
68
47
|
actors: nil, targets: nil, actor_names: nil, actor_ids: nil)
|
69
48
|
body = {
|
@@ -94,11 +73,6 @@ module WorkOS
|
|
94
73
|
# @param [String] id An Audit Log Export ID
|
95
74
|
#
|
96
75
|
# @return [WorkOS::AuditLogExport]
|
97
|
-
sig do
|
98
|
-
params(
|
99
|
-
id: String,
|
100
|
-
).returns(WorkOS::AuditLogExport)
|
101
|
-
end
|
102
76
|
def get_export(id:)
|
103
77
|
request = get_request(
|
104
78
|
auth: true,
|
@@ -1,16 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# typed: true
|
3
2
|
|
4
3
|
module WorkOS
|
5
4
|
# The AuthenticationFactorAndChallenge class represents
|
6
5
|
# an authentication factor and challenge for a given user.
|
7
6
|
class AuthenticationFactorAndChallenge
|
8
7
|
include HashProvider
|
9
|
-
extend T::Sig
|
10
8
|
|
11
9
|
attr_accessor :authentication_factor, :authentication_challenge
|
12
10
|
|
13
|
-
sig { params(authentication_response_json: String).void }
|
14
11
|
def initialize(authentication_response_json)
|
15
12
|
json = JSON.parse(authentication_response_json, symbolize_names: true)
|
16
13
|
@authentication_factor = WorkOS::Factor.new(
|
@@ -1,27 +1,24 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# typed: true
|
3
2
|
|
4
3
|
module WorkOS
|
5
4
|
# The AuthenticationResponse class represents an Authentication Response as well as an corresponding
|
6
5
|
# response data that can later be appended on.
|
7
6
|
class AuthenticationResponse
|
8
7
|
include HashProvider
|
9
|
-
extend T::Sig
|
10
8
|
|
11
9
|
attr_accessor :user, :organization_id, :impersonator, :access_token, :refresh_token
|
12
10
|
|
13
|
-
sig { params(authentication_response_json: String).void }
|
14
11
|
def initialize(authentication_response_json)
|
15
12
|
json = JSON.parse(authentication_response_json, symbolize_names: true)
|
16
13
|
@user = WorkOS::User.new(json[:user].to_json)
|
17
|
-
@organization_id =
|
14
|
+
@organization_id = json[:organization_id]
|
18
15
|
@impersonator =
|
19
16
|
if (impersonator_json = json[:impersonator])
|
20
17
|
Impersonator.new(email: impersonator_json[:email],
|
21
18
|
reason: impersonator_json[:reason],)
|
22
19
|
end
|
23
|
-
@access_token =
|
24
|
-
@refresh_token =
|
20
|
+
@access_token = json[:access_token]
|
21
|
+
@refresh_token = json[:refresh_token]
|
25
22
|
end
|
26
23
|
|
27
24
|
def to_json(*)
|
data/lib/workos/challenge.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# typed: false
|
3
2
|
|
4
3
|
module WorkOS
|
5
4
|
# The Challnge class provides a lightweight wrapper around
|
@@ -7,20 +6,19 @@ module WorkOS
|
|
7
6
|
# in DirectoryUser space, and is instantiated internally but exposed.
|
8
7
|
class Challenge
|
9
8
|
include HashProvider
|
10
|
-
extend T::Sig
|
11
9
|
|
12
10
|
attr_accessor :id, :object, :expires_at, :code, :authentication_factor_id, :updated_at, :created_at
|
13
11
|
|
14
|
-
sig { params(json: String).void }
|
15
12
|
def initialize(json)
|
16
|
-
|
17
|
-
|
18
|
-
@
|
19
|
-
@
|
20
|
-
@
|
21
|
-
@
|
22
|
-
@
|
23
|
-
@
|
13
|
+
hash = JSON.parse(json, symbolize_names: true)
|
14
|
+
|
15
|
+
@id = hash[:id]
|
16
|
+
@object = hash[:object]
|
17
|
+
@expires_at = hash[:expires_at]
|
18
|
+
@code = hash[:code]
|
19
|
+
@authentication_factor_id = hash[:authentication_factor_id]
|
20
|
+
@created_at = hash[:created_at]
|
21
|
+
@updated_at = hash[:updated_at]
|
24
22
|
end
|
25
23
|
|
26
24
|
def to_json(*)
|
@@ -34,22 +32,5 @@ module WorkOS
|
|
34
32
|
updated_at: updated_at,
|
35
33
|
}
|
36
34
|
end
|
37
|
-
|
38
|
-
private
|
39
|
-
|
40
|
-
sig { params(json_string: String).returns(WorkOS::Types::ChallengeStruct) }
|
41
|
-
def parse_json(json_string)
|
42
|
-
hash = JSON.parse(json_string, symbolize_names: true)
|
43
|
-
|
44
|
-
WorkOS::Types::ChallengeStruct.new(
|
45
|
-
id: hash[:id],
|
46
|
-
object: hash[:object],
|
47
|
-
expires_at: hash[:expires_at],
|
48
|
-
code: hash[:code],
|
49
|
-
authentication_factor_id: hash[:authentication_factor_id],
|
50
|
-
created_at: hash[:created_at],
|
51
|
-
updated_at: hash[:updated_at],
|
52
|
-
)
|
53
|
-
end
|
54
35
|
end
|
55
36
|
end
|
data/lib/workos/client.rb
CHANGED
@@ -1,13 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# typed: false
|
3
2
|
|
4
3
|
module WorkOS
|
5
4
|
# A Net::HTTP based API client for interacting with the WorkOS API
|
6
5
|
module Client
|
7
|
-
extend T::Sig
|
8
6
|
include Kernel
|
9
7
|
|
10
|
-
sig { returns(Net::HTTP) }
|
11
8
|
def client
|
12
9
|
Net::HTTP.new(WorkOS.config.api_hostname, 443).tap do |http_client|
|
13
10
|
http_client.use_ssl = true
|
@@ -17,11 +14,6 @@ module WorkOS
|
|
17
14
|
end
|
18
15
|
end
|
19
16
|
|
20
|
-
sig do
|
21
|
-
params(
|
22
|
-
request: T.any(Net::HTTP::Get, Net::HTTP::Post, Net::HTTP::Delete, Net::HTTP::Put),
|
23
|
-
).returns(::T.untyped)
|
24
|
-
end
|
25
17
|
def execute_request(request:)
|
26
18
|
begin
|
27
19
|
response = client.request(request)
|
@@ -37,14 +29,6 @@ module WorkOS
|
|
37
29
|
response
|
38
30
|
end
|
39
31
|
|
40
|
-
sig do
|
41
|
-
params(
|
42
|
-
path: String,
|
43
|
-
auth: T.nilable(T::Boolean),
|
44
|
-
params: T.nilable(Hash),
|
45
|
-
access_token: T.nilable(String),
|
46
|
-
).returns(Net::HTTP::Get)
|
47
|
-
end
|
48
32
|
def get_request(path:, auth: false, params: {}, access_token: nil)
|
49
33
|
uri = URI(path)
|
50
34
|
uri.query = URI.encode_www_form(params) if params
|
@@ -59,14 +43,6 @@ module WorkOS
|
|
59
43
|
request
|
60
44
|
end
|
61
45
|
|
62
|
-
sig do
|
63
|
-
params(
|
64
|
-
path: String,
|
65
|
-
auth: T.nilable(T::Boolean),
|
66
|
-
idempotency_key: T.nilable(String),
|
67
|
-
body: T.nilable(Hash),
|
68
|
-
).returns(Net::HTTP::Post)
|
69
|
-
end
|
70
46
|
def post_request(path:, auth: false, idempotency_key: nil, body: nil)
|
71
47
|
request = Net::HTTP::Post.new(path, 'Content-Type' => 'application/json')
|
72
48
|
request.body = body.to_json if body
|
@@ -76,13 +52,6 @@ module WorkOS
|
|
76
52
|
request
|
77
53
|
end
|
78
54
|
|
79
|
-
sig do
|
80
|
-
params(
|
81
|
-
path: String,
|
82
|
-
auth: T.nilable(T::Boolean),
|
83
|
-
params: T.nilable(Hash),
|
84
|
-
).returns(Net::HTTP::Delete)
|
85
|
-
end
|
86
55
|
def delete_request(path:, auth: false, params: {})
|
87
56
|
uri = URI(path)
|
88
57
|
uri.query = URI.encode_www_form(params) if params
|
@@ -97,14 +66,6 @@ module WorkOS
|
|
97
66
|
request
|
98
67
|
end
|
99
68
|
|
100
|
-
sig do
|
101
|
-
params(
|
102
|
-
path: String,
|
103
|
-
auth: T.nilable(T::Boolean),
|
104
|
-
idempotency_key: T.nilable(String),
|
105
|
-
body: T.nilable(Hash),
|
106
|
-
).returns(Net::HTTP::Put)
|
107
|
-
end
|
108
69
|
def put_request(path:, auth: false, idempotency_key: nil, body: nil)
|
109
70
|
request = Net::HTTP::Put.new(path, 'Content-Type' => 'application/json')
|
110
71
|
request.body = body.to_json if body
|
@@ -114,7 +75,6 @@ module WorkOS
|
|
114
75
|
request
|
115
76
|
end
|
116
77
|
|
117
|
-
sig { returns(String) }
|
118
78
|
def user_agent
|
119
79
|
engine = defined?(::RUBY_ENGINE) ? ::RUBY_ENGINE : 'Ruby'
|
120
80
|
|
@@ -127,7 +87,6 @@ module WorkOS
|
|
127
87
|
end
|
128
88
|
|
129
89
|
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
130
|
-
sig { params(response: ::T.untyped).void }
|
131
90
|
def handle_error_response(response:)
|
132
91
|
http_status = response.code.to_i
|
133
92
|
json = JSON.parse(response.body)
|
data/lib/workos/configuration.rb
CHANGED
data/lib/workos/connection.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# typed: true
|
3
2
|
|
4
3
|
module WorkOS
|
5
4
|
# The Connection class provides a lightweight wrapper around
|
@@ -8,27 +7,23 @@ module WorkOS
|
|
8
7
|
# Note: status is deprecated - use state instead
|
9
8
|
class Connection
|
10
9
|
include HashProvider
|
11
|
-
extend T::Sig
|
12
10
|
|
13
11
|
attr_accessor :id, :name, :connection_type, :domains, :organization_id,
|
14
12
|
:state, :status, :created_at, :updated_at
|
15
13
|
|
16
|
-
# rubocop:disable Metrics/AbcSize
|
17
|
-
sig { params(json: String).void }
|
18
14
|
def initialize(json)
|
19
|
-
|
20
|
-
|
21
|
-
@id =
|
22
|
-
@name =
|
23
|
-
@connection_type =
|
24
|
-
@domains =
|
25
|
-
@organization_id =
|
26
|
-
@state =
|
27
|
-
@status =
|
28
|
-
@created_at =
|
29
|
-
@updated_at =
|
15
|
+
hash = JSON.parse(json, symbolize_names: true)
|
16
|
+
|
17
|
+
@id = hash[:id]
|
18
|
+
@name = hash[:name]
|
19
|
+
@connection_type = hash[:connection_type]
|
20
|
+
@domains = hash[:domains]
|
21
|
+
@organization_id = hash[:organization_id]
|
22
|
+
@state = hash[:state]
|
23
|
+
@status = hash[:status]
|
24
|
+
@created_at = hash[:created_at]
|
25
|
+
@updated_at = hash[:updated_at]
|
30
26
|
end
|
31
|
-
# rubocop:enable Metrics/AbcSize
|
32
27
|
|
33
28
|
def to_json(*)
|
34
29
|
{
|
@@ -43,24 +38,5 @@ module WorkOS
|
|
43
38
|
updated_at: updated_at,
|
44
39
|
}
|
45
40
|
end
|
46
|
-
|
47
|
-
private
|
48
|
-
|
49
|
-
sig { params(json_string: String).returns(WorkOS::Types::ConnectionStruct) }
|
50
|
-
def parse_json(json_string)
|
51
|
-
hash = JSON.parse(json_string, symbolize_names: true)
|
52
|
-
|
53
|
-
WorkOS::Types::ConnectionStruct.new(
|
54
|
-
id: hash[:id],
|
55
|
-
name: hash[:name],
|
56
|
-
connection_type: hash[:connection_type],
|
57
|
-
domains: hash[:domains],
|
58
|
-
organization_id: hash[:organization_id],
|
59
|
-
state: hash[:state],
|
60
|
-
status: hash[:status],
|
61
|
-
created_at: hash[:created_at],
|
62
|
-
updated_at: hash[:updated_at],
|
63
|
-
)
|
64
|
-
end
|
65
41
|
end
|
66
42
|
end
|