workos 4.0.0 → 4.2.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.
Files changed (139) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +37 -0
  3. data/.github/workflows/release.yml +43 -0
  4. data/.rubocop.yml +8 -1
  5. data/Gemfile.lock +22 -69
  6. data/lib/workos/audit_log_export.rb +8 -31
  7. data/lib/workos/audit_logs.rb +0 -26
  8. data/lib/workos/authentication_factor_and_challenge.rb +0 -3
  9. data/lib/workos/authentication_response.rb +12 -5
  10. data/lib/workos/challenge.rb +9 -28
  11. data/lib/workos/client.rb +0 -41
  12. data/lib/workos/configuration.rb +0 -1
  13. data/lib/workos/connection.rb +11 -35
  14. data/lib/workos/directory.rb +10 -37
  15. data/lib/workos/directory_group.rb +9 -36
  16. data/lib/workos/directory_sync.rb +0 -21
  17. data/lib/workos/directory_user.rb +17 -51
  18. data/lib/workos/errors.rb +0 -16
  19. data/lib/workos/event.rb +5 -26
  20. data/lib/workos/events.rb +0 -7
  21. data/lib/workos/factor.rb +9 -28
  22. data/lib/workos/hash_provider.rb +0 -1
  23. data/lib/workos/impersonator.rb +23 -0
  24. data/lib/workos/invitation.rb +12 -37
  25. data/lib/workos/mfa.rb +0 -42
  26. data/lib/workos/organization.rb +8 -31
  27. data/lib/workos/organization_membership.rb +8 -27
  28. data/lib/workos/organizations.rb +0 -26
  29. data/lib/workos/passwordless.rb +0 -14
  30. data/lib/workos/portal.rb +1 -13
  31. data/lib/workos/profile.rb +12 -39
  32. data/lib/workos/profile_and_token.rb +1 -4
  33. data/lib/workos/refresh_authentication_response.rb +24 -0
  34. data/lib/workos/sso.rb +1 -43
  35. data/lib/workos/types/intent.rb +16 -0
  36. data/lib/workos/types/list_struct.rb +8 -5
  37. data/lib/workos/types/passwordless_session_struct.rb +10 -9
  38. data/lib/workos/types/provider.rb +15 -0
  39. data/lib/workos/types.rb +5 -23
  40. data/lib/workos/user.rb +10 -31
  41. data/lib/workos/user_and_token.rb +1 -4
  42. data/lib/workos/user_management.rb +108 -219
  43. data/lib/workos/user_response.rb +0 -3
  44. data/lib/workos/verify_challenge.rb +4 -18
  45. data/lib/workos/version.rb +1 -2
  46. data/lib/workos/webhook.rb +5 -26
  47. data/lib/workos/webhooks.rb +1 -38
  48. data/lib/workos.rb +2 -2
  49. data/spec/lib/workos/audit_logs_spec.rb +2 -3
  50. data/spec/lib/workos/configuration_spec.rb +0 -1
  51. data/spec/lib/workos/directory_sync_spec.rb +0 -1
  52. data/spec/lib/workos/directory_user_spec.rb +0 -1
  53. data/spec/lib/workos/event_spec.rb +0 -1
  54. data/spec/lib/workos/mfa_spec.rb +0 -1
  55. data/spec/lib/workos/organizations_spec.rb +0 -1
  56. data/spec/lib/workos/passwordless_spec.rb +0 -1
  57. data/spec/lib/workos/portal_spec.rb +0 -1
  58. data/spec/lib/workos/sso_spec.rb +0 -1
  59. data/spec/lib/workos/user_management_spec.rb +59 -10
  60. data/spec/lib/workos/webhooks_spec.rb +0 -1
  61. data/spec/spec_helper.rb +6 -9
  62. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_code/valid.yml +1 -1
  63. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_code/valid_with_impersonator.yml +80 -0
  64. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_email_verification/valid.yml +1 -1
  65. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_magic_auth/valid.yml +1 -1
  66. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_organization_selection/valid.yml +1 -1
  67. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_password/valid.yml +1 -1
  68. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_refresh_code/invalid.yml +81 -0
  69. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_refresh_token/valid.yml +81 -0
  70. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_totp/valid.yml +1 -1
  71. data/spec/support/shared_examples/client_spec.rb +0 -1
  72. data/workos.gemspec +1 -6
  73. metadata +19 -129
  74. data/.semaphore/rubygems.yml +0 -24
  75. data/.semaphore/semaphore.yml +0 -51
  76. data/bin/tapioca +0 -29
  77. data/codecov.yml +0 -12
  78. data/devbox.json +0 -18
  79. data/devbox.lock +0 -11
  80. data/lib/workos/types/audit_log_export_struct.rb +0 -17
  81. data/lib/workos/types/challenge_struct.rb +0 -18
  82. data/lib/workos/types/connection_struct.rb +0 -20
  83. data/lib/workos/types/directory_group_struct.rb +0 -19
  84. data/lib/workos/types/directory_struct.rb +0 -19
  85. data/lib/workos/types/directory_user_struct.rb +0 -26
  86. data/lib/workos/types/event_struct.rb +0 -15
  87. data/lib/workos/types/factor_struct.rb +0 -18
  88. data/lib/workos/types/intent_enum.rb +0 -17
  89. data/lib/workos/types/invitation_struct.rb +0 -20
  90. data/lib/workos/types/magic_auth_challenge_struct.rb +0 -12
  91. data/lib/workos/types/organization_membership_struct.rb +0 -16
  92. data/lib/workos/types/organization_struct.rb +0 -17
  93. data/lib/workos/types/profile_struct.rb +0 -21
  94. data/lib/workos/types/provider_enum.rb +0 -16
  95. data/lib/workos/types/user_struct.rb +0 -18
  96. data/lib/workos/types/verify_challenge_struct.rb +0 -13
  97. data/lib/workos/types/webhook_struct.rb +0 -15
  98. data/sorbet/config +0 -2
  99. data/sorbet/rbi/gems/addressable@2.8.0.rbi +0 -290
  100. data/sorbet/rbi/gems/ast@2.4.2.rbi +0 -54
  101. data/sorbet/rbi/gems/codecov@0.2.12.rbi +0 -55
  102. data/sorbet/rbi/gems/coderay@1.1.3.rbi +0 -8
  103. data/sorbet/rbi/gems/crack@0.4.5.rbi +0 -57
  104. data/sorbet/rbi/gems/diff-lcs@1.4.4.rbi +0 -185
  105. data/sorbet/rbi/gems/docile@1.3.5.rbi +0 -54
  106. data/sorbet/rbi/gems/hashdiff@1.0.1.rbi +0 -82
  107. data/sorbet/rbi/gems/json@2.5.1.rbi +0 -109
  108. data/sorbet/rbi/gems/method_source@1.0.0.rbi +0 -8
  109. data/sorbet/rbi/gems/parallel@1.20.1.rbi +0 -113
  110. data/sorbet/rbi/gems/parser@3.0.1.0.rbi +0 -1187
  111. data/sorbet/rbi/gems/pry@0.14.2.rbi +0 -8
  112. data/sorbet/rbi/gems/public_suffix@4.0.6.rbi +0 -146
  113. data/sorbet/rbi/gems/rainbow@3.0.0.rbi +0 -153
  114. data/sorbet/rbi/gems/rake@13.0.3.rbi +0 -807
  115. data/sorbet/rbi/gems/rbi@0.0.16.rbi +0 -2118
  116. data/sorbet/rbi/gems/regexp_parser@2.1.1.rbi +0 -1117
  117. data/sorbet/rbi/gems/rexml@3.2.5.rbi +0 -709
  118. data/sorbet/rbi/gems/rspec-core@3.9.3.rbi +0 -2467
  119. data/sorbet/rbi/gems/rspec-expectations@3.9.4.rbi +0 -1569
  120. data/sorbet/rbi/gems/rspec-mocks@3.9.1.rbi +0 -1493
  121. data/sorbet/rbi/gems/rspec-support@3.9.4.rbi +0 -511
  122. data/sorbet/rbi/gems/rspec@3.9.0.rbi +0 -38
  123. data/sorbet/rbi/gems/rubocop-ast@1.4.1.rbi +0 -1881
  124. data/sorbet/rbi/gems/rubocop@0.93.1.rbi +0 -11497
  125. data/sorbet/rbi/gems/ruby-progressbar@1.11.0.rbi +0 -405
  126. data/sorbet/rbi/gems/simplecov-html@0.12.3.rbi +0 -89
  127. data/sorbet/rbi/gems/simplecov@0.21.2.rbi +0 -577
  128. data/sorbet/rbi/gems/simplecov_json_formatter@0.1.2.rbi +0 -8
  129. data/sorbet/rbi/gems/spoom@1.1.15.rbi +0 -1549
  130. data/sorbet/rbi/gems/tapioca@0.7.3.rbi +0 -1718
  131. data/sorbet/rbi/gems/thor@1.2.1.rbi +0 -844
  132. data/sorbet/rbi/gems/unicode-display_width@1.7.0.rbi +0 -22
  133. data/sorbet/rbi/gems/unparser@0.6.2.rbi +0 -8
  134. data/sorbet/rbi/gems/vcr@5.0.0.rbi +0 -699
  135. data/sorbet/rbi/gems/webmock@3.12.2.rbi +0 -662
  136. data/sorbet/rbi/gems/yard-sorbet@0.8.0.rbi +0 -268
  137. data/sorbet/rbi/gems/yard@0.9.26.rbi +0 -4048
  138. data/sorbet/tapioca/config.yml +0 -13
  139. data/sorbet/tapioca/require.rb +0 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 301b7f9d339c1ec1bf85dfc43a4d1ba85de8b6234323c8982fa2f2cf76bed6dd
4
- data.tar.gz: 91ed96c899e42ccaed1955304fd98a7da7ca7e946be803df4e7c27f4cb3db5fc
3
+ metadata.gz: 7010166c9732e20f33a78674e669c1f583fda9695ddbce0b998b666166cbb60b
4
+ data.tar.gz: 642d0e92afe77f1aec7404fffdfec5af386d05807ee43c6bfa3201c11fe45cd7
5
5
  SHA512:
6
- metadata.gz: b96feaf7d73165f33b979f3cd396adcf91aa4457161647b57423bf204bd89de42e6badeba37f06faf562bd58f5148fe9bd329850721c1efe5f0d0d18e0459bf6
7
- data.tar.gz: 9417023f79e961c063fcb17c4ca60035e292fe2c321710778d99610165bea2b5c564e7dfad24a7b2effdb51b0d5355fe0c4155de45c7ef5d0d073ddfbbb1f1c6
6
+ metadata.gz: b65ccc5817fc14633a235b12e2f3c25be1b04b6f1c07d9b781fd5d131cad89d7528dd0ab6326f100d542425261de9d1a81d28e89c1e30158a7e2a05291cdb8dd
7
+ data.tar.gz: 94b2b2d3e59882de00b1ff7c01d2a0c5284357d52fa4e8418f86eff9ea37b0c0d0ef2c197b88ad0497ca56b872f2ab3309a4598feab6a80aa6b1f55114bc57e4
@@ -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.5
31
+ TargetRubyVersion: 2.7
data/Gemfile.lock CHANGED
@@ -1,41 +1,29 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- workos (4.0.0)
5
- sorbet-runtime (~> 0.5)
4
+ workos (4.2.0)
6
5
 
7
6
  GEM
8
7
  remote: https://rubygems.org/
9
8
  specs:
10
- addressable (2.8.0)
11
- public_suffix (>= 2.0.2, < 5.0)
9
+ addressable (2.8.6)
10
+ public_suffix (>= 2.0.2, < 6.0)
12
11
  ast (2.4.2)
13
- codecov (0.2.12)
14
- json
15
- simplecov
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.4.4)
20
- docile (1.3.5)
21
- hashdiff (1.0.1)
22
- json (2.5.1)
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
- pry (0.14.2)
28
- coderay (~> 1.1)
29
- method_source (~> 1.0)
30
- public_suffix (4.0.6)
31
- rainbow (3.0.0)
32
- rbi (0.0.16)
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.4.1)
62
- parser (>= 2.7.1.5)
63
- ruby-progressbar (1.11.0)
64
- simplecov (0.21.2)
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.12.2)
95
- addressable (>= 2.3.6)
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
- raw = parse_json(json)
15
-
16
- @object = T.let(raw.object, String)
17
- @id = T.let(raw.id, String)
18
- @state = T.let(raw.state, String)
19
- @url = raw.url
20
- @created_at = T.let(raw.created_at, String)
21
- @updated_at = T.let(raw.updated_at, String)
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
@@ -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,26 +1,33 @@
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
- attr_accessor :user, :organization_id
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 = T.let(json[:organization_id], T.nilable(String))
14
+ @organization_id = json[:organization_id]
15
+ @impersonator =
16
+ if (impersonator_json = json[:impersonator])
17
+ Impersonator.new(email: impersonator_json[:email],
18
+ reason: impersonator_json[:reason],)
19
+ end
20
+ @access_token = json[:access_token]
21
+ @refresh_token = json[:refresh_token]
18
22
  end
19
23
 
20
24
  def to_json(*)
21
25
  {
22
26
  user: user.to_json,
23
27
  organization_id: organization_id,
28
+ impersonator: impersonator.to_json,
29
+ access_token: access_token,
30
+ refresh_token: refresh_token,
24
31
  }
25
32
  end
26
33
  end
@@ -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
- raw = parse_json(json)
17
- @id = T.let(raw.id, String)
18
- @object = T.let(raw.object, String)
19
- @expires_at = T.let(raw.expires_at, String)
20
- @code = raw.code
21
- @authentication_factor_id = T.let(raw.authentication_factor_id, String)
22
- @created_at = T.let(raw.created_at, String)
23
- @updated_at = T.let(raw.updated_at, String)
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)
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: true
3
2
 
4
3
  module WorkOS
5
4
  # Configuration class sets config initializer
@@ -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
- raw = parse_json(json)
20
-
21
- @id = T.let(raw.id, String)
22
- @name = T.let(raw.name, String)
23
- @connection_type = T.let(raw.connection_type, String)
24
- @domains = T.let(raw.domains, Array)
25
- @organization_id = raw.organization_id
26
- @state = T.let(raw.state, String)
27
- @status = T.let(raw.status, String)
28
- @created_at = T.let(raw.created_at, String)
29
- @updated_at = T.let(raw.updated_at, String)
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