workos 0.10.0 → 1.1.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/.rubocop.yml +3 -1
- data/.ruby-version +1 -1
- data/.semaphore/semaphore.yml +10 -4
- data/Gemfile.lock +49 -36
- data/LICENSE +1 -1
- data/README.md +13 -230
- data/lib/workos/client.rb +24 -6
- data/lib/workos/connection.rb +12 -1
- data/lib/workos/directory.rb +53 -0
- data/lib/workos/directory_group.rb +44 -0
- data/lib/workos/directory_sync.rb +63 -7
- data/lib/workos/directory_user.rb +63 -0
- data/lib/workos/organizations.rb +150 -0
- data/lib/workos/passwordless.rb +4 -0
- data/lib/workos/portal.rb +1 -81
- data/lib/workos/profile.rb +9 -12
- data/lib/workos/profile_and_token.rb +28 -0
- data/lib/workos/sso.rb +56 -104
- data/lib/workos/types/connection_struct.rb +3 -0
- data/lib/workos/types/directory_group_struct.rb +13 -0
- data/lib/workos/types/directory_struct.rb +16 -0
- data/lib/workos/types/directory_user_struct.rb +19 -0
- data/lib/workos/types/intent_enum.rb +1 -0
- data/lib/workos/types.rb +3 -0
- data/lib/workos/version.rb +1 -1
- data/lib/workos.rb +5 -0
- data/sorbet/rbi/gems/addressable.rbi +199 -0
- data/sorbet/rbi/gems/ast.rbi +49 -0
- data/sorbet/rbi/gems/codecov.rbi +37 -0
- data/sorbet/rbi/gems/crack.rbi +62 -0
- data/sorbet/rbi/gems/docile.rbi +36 -0
- data/sorbet/rbi/gems/hashdiff.rbi +66 -0
- data/sorbet/rbi/gems/parallel.rbi +83 -0
- data/sorbet/rbi/gems/parser.rbi +1429 -0
- data/sorbet/rbi/gems/public_suffix.rbi +104 -0
- data/sorbet/rbi/gems/rainbow.rbi +118 -0
- data/sorbet/rbi/gems/rake.rbi +644 -0
- data/sorbet/rbi/gems/regexp_parser.rbi +926 -0
- data/sorbet/rbi/gems/rexml.rbi +628 -0
- data/sorbet/rbi/gems/rspec-core.rbi +1898 -0
- data/sorbet/rbi/gems/rspec-expectations.rbi +1127 -0
- data/sorbet/rbi/gems/rspec-mocks.rbi +1099 -0
- data/sorbet/rbi/gems/rspec-support.rbi +280 -0
- data/sorbet/rbi/gems/rspec.rbi +15 -0
- data/sorbet/rbi/gems/rubocop-ast.rbi +1355 -0
- data/sorbet/rbi/gems/rubocop.rbi +7253 -0
- data/sorbet/rbi/gems/ruby-progressbar.rbi +304 -0
- data/sorbet/rbi/gems/simplecov-html.rbi +35 -0
- data/sorbet/rbi/gems/simplecov.rbi +406 -0
- data/sorbet/rbi/gems/unicode-display_width.rbi +17 -0
- data/sorbet/rbi/gems/vcr.rbi +572 -0
- data/sorbet/rbi/gems/webmock.rbi +556 -0
- data/sorbet/rbi/gems/yard.rbi +1165 -0
- data/sorbet/rbi/sorbet-typed/lib/rake/all/rake.rbi +645 -0
- data/sorbet/rbi/sorbet-typed/lib/rspec-core/all/rspec-core.rbi +1891 -0
- data/sorbet/rbi/sorbet-typed/lib/rubocop/~>0.85/rubocop.rbi +2072 -0
- data/sorbet/rbi/sorbet-typed/lib/yard/all/yard.rbi +1214 -0
- data/sorbet/rbi/todo.rbi +1 -3
- data/spec/lib/workos/audit_trail_spec.rb +0 -8
- data/spec/lib/workos/directory_sync_spec.rb +347 -40
- data/spec/lib/workos/organizations_spec.rb +164 -0
- data/spec/lib/workos/passwordless_spec.rb +0 -8
- data/spec/lib/workos/portal_spec.rb +17 -123
- data/spec/lib/workos/sso_spec.rb +172 -173
- data/spec/spec_helper.rb +2 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/delete_directory.yml +72 -0
- data/spec/support/fixtures/vcr_cassettes/{sso/list_connections.yml → directory_sync/list_directories/with_after.yml} +7 -7
- data/spec/support/fixtures/vcr_cassettes/{sso/list_connections_with_limit_param.yml → directory_sync/list_directories/with_before.yml} +8 -8
- data/spec/support/fixtures/vcr_cassettes/{sso/list_connections_with_connection_type_param.yml → directory_sync/list_directories/with_domain.yml} +11 -10
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_limit.yml +74 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/{list_directories.yml → list_directories/with_no_options.yml} +1 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_search.yml +73 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_after.yml +76 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_before.yml +74 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_directory.yml +78 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_limit.yml +74 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/{list_groups.yml → list_groups/with_no_options.yml} +16 -6
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_user.yml +72 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_after.yml +86 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_before.yml +75 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_directory.yml +93 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_group.yml +76 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_limit.yml +75 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/{list_users.yml → list_users/with_no_options.yml} +16 -6
- data/spec/support/fixtures/vcr_cassettes/organization/get.yml +73 -0
- data/spec/support/fixtures/vcr_cassettes/organization/get_invalid.yml +72 -0
- data/spec/support/fixtures/vcr_cassettes/organization/update.yml +73 -0
- data/spec/support/fixtures/vcr_cassettes/organization/update_invalid.yml +73 -0
- data/spec/support/fixtures/vcr_cassettes/portal/generate_link_dsync.yml +72 -0
- data/spec/support/fixtures/vcr_cassettes/portal/{generate_link.yml → generate_link_sso.yml} +1 -1
- data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_after.yml +73 -0
- data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_before.yml +73 -0
- data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_connection_type.yml +73 -0
- data/spec/support/fixtures/vcr_cassettes/sso/{list_connections_with_domain_param.yml → list_connections/with_domain.yml} +6 -6
- data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_limit.yml +74 -0
- data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_no_options.yml +73 -0
- data/spec/support/fixtures/vcr_cassettes/sso/{list_connections_with_before_param.yml → list_connections/with_organization_id.yml} +7 -8
- data/spec/support/fixtures/vcr_cassettes/sso/profile.yml +74 -0
- data/workos.gemspec +2 -0
- metadata +114 -43
- data/sorbet/rbi/hidden-definitions/errors.txt +0 -24896
- data/sorbet/rbi/hidden-definitions/hidden.rbi +0 -38411
- data/sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi +0 -8684
- data/sorbet/rbi/sorbet-typed/lib/ruby/all/gem.rbi +0 -4222
- data/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +0 -111
- data/sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi +0 -543
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories_with_domain_param.yml +0 -63
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups_with_directory_param.yml +0 -62
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users_with_directory_param.yml +0 -62
- data/spec/support/fixtures/vcr_cassettes/sso/create_connection_with_invalid_source.yml +0 -58
- data/spec/support/fixtures/vcr_cassettes/sso/create_connection_with_valid_source.yml +0 -63
- data/spec/support/fixtures/vcr_cassettes/sso/list_connections_with_after_param.yml +0 -72
data/lib/workos/sso.rb
CHANGED
|
@@ -26,10 +26,10 @@ module WorkOS
|
|
|
26
26
|
# required
|
|
27
27
|
# @param [String] provider A provider name for an Identity Provider
|
|
28
28
|
# configured on your WorkOS dashboard. Only 'Google' is supported.
|
|
29
|
+
# @param [String] connection The ID for a Connection configured on
|
|
30
|
+
# WorkOS.
|
|
29
31
|
# @param [String] client_id The WorkOS client ID for the environment
|
|
30
32
|
# where you've configured your SSO connection.
|
|
31
|
-
# @param [String] project_id The WorkOS project ID for the project.
|
|
32
|
-
# The project_id is deprecated in Dashboard2.
|
|
33
33
|
# @param [String] redirect_uri The URI where users are directed
|
|
34
34
|
# after completing the authentication step. Must match a
|
|
35
35
|
# configured redirect URI on your WorkOS dashboard.
|
|
@@ -54,28 +54,26 @@ module WorkOS
|
|
|
54
54
|
sig do
|
|
55
55
|
params(
|
|
56
56
|
redirect_uri: String,
|
|
57
|
-
project_id: T.nilable(String),
|
|
58
57
|
client_id: T.nilable(String),
|
|
59
58
|
domain: T.nilable(String),
|
|
60
59
|
provider: T.nilable(String),
|
|
60
|
+
connection: T.nilable(String),
|
|
61
61
|
state: T.nilable(String),
|
|
62
62
|
).returns(String)
|
|
63
63
|
end
|
|
64
64
|
def authorization_url(
|
|
65
65
|
redirect_uri:,
|
|
66
|
-
project_id: nil,
|
|
67
66
|
client_id: nil,
|
|
68
67
|
domain: nil,
|
|
69
68
|
provider: nil,
|
|
69
|
+
connection: nil,
|
|
70
70
|
state: ''
|
|
71
71
|
)
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
validate_domain_and_provider(provider: provider, domain: domain)
|
|
72
|
+
validate_authorization_url_arguments(
|
|
73
|
+
provider: provider,
|
|
74
|
+
domain: domain,
|
|
75
|
+
connection: connection,
|
|
76
|
+
)
|
|
79
77
|
|
|
80
78
|
query = URI.encode_www_form({
|
|
81
79
|
client_id: client_id,
|
|
@@ -84,49 +82,43 @@ module WorkOS
|
|
|
84
82
|
state: state,
|
|
85
83
|
domain: domain,
|
|
86
84
|
provider: provider,
|
|
85
|
+
connection: connection,
|
|
87
86
|
}.compact)
|
|
88
87
|
|
|
89
88
|
"https://#{WorkOS::API_HOSTNAME}/sso/authorize?#{query}"
|
|
90
89
|
end
|
|
91
90
|
|
|
91
|
+
sig do
|
|
92
|
+
params(
|
|
93
|
+
access_token: String,
|
|
94
|
+
).returns(WorkOS::Profile)
|
|
95
|
+
end
|
|
96
|
+
def get_profile(access_token:)
|
|
97
|
+
response = execute_request(
|
|
98
|
+
request: get_request(
|
|
99
|
+
path: '/sso/profile',
|
|
100
|
+
auth: true,
|
|
101
|
+
access_token: access_token,
|
|
102
|
+
),
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
WorkOS::Profile.new(response.body)
|
|
106
|
+
end
|
|
107
|
+
|
|
92
108
|
# Fetch the profile details for the authenticated SSO user.
|
|
93
109
|
#
|
|
94
110
|
# @param [String] code The authorization code provided in the callback URL
|
|
95
111
|
# @param [String] client_id The WorkOS client ID for the environment
|
|
96
|
-
# where you've
|
|
97
|
-
# @param [String] project_id The WorkOS project ID for the project.
|
|
98
|
-
# The project_id is deprecated in Dashboard2.
|
|
99
|
-
#
|
|
100
|
-
# @example
|
|
101
|
-
# WorkOS::SSO.profile(
|
|
102
|
-
# code: 'acme.com',
|
|
103
|
-
# client_id: 'project_01DG5TGK363GRVXP3ZS40WNGEZ'
|
|
104
|
-
# )
|
|
105
|
-
# => #<WorkOS::Profile:0x00007fb6e4193d20
|
|
106
|
-
# @id="prof_01DRA1XNSJDZ19A31F183ECQW5",
|
|
107
|
-
# @email="demo@workos-okta.com",
|
|
108
|
-
# @first_name="WorkOS",
|
|
109
|
-
# @connection_type="OktaSAML",
|
|
110
|
-
# @last_name="Demo",
|
|
111
|
-
# @idp_id="00u1klkowm8EGah2H357",
|
|
112
|
-
# @access_token="01DVX6QBS3EG6FHY2ESAA5Q65X"
|
|
113
|
-
# >
|
|
112
|
+
# where you've configured your SSO connection
|
|
114
113
|
#
|
|
115
|
-
# @return [WorkOS::
|
|
114
|
+
# @return [WorkOS::ProfileAndToken]
|
|
116
115
|
sig do
|
|
117
116
|
params(
|
|
118
117
|
code: String,
|
|
119
|
-
project_id: T.nilable(String),
|
|
120
118
|
client_id: T.nilable(String),
|
|
121
|
-
).returns(WorkOS::
|
|
119
|
+
).returns(WorkOS::ProfileAndToken)
|
|
122
120
|
end
|
|
123
|
-
def
|
|
124
|
-
if project_id
|
|
125
|
-
warn '[DEPRECATION] `project_id` is deprecated.
|
|
126
|
-
Please use `client_id` instead.'
|
|
127
|
-
client_id = project_id
|
|
128
|
-
end
|
|
129
|
-
|
|
121
|
+
def profile_and_token(code:, client_id: nil)
|
|
130
122
|
body = {
|
|
131
123
|
client_id: client_id,
|
|
132
124
|
client_secret: WorkOS.key!,
|
|
@@ -135,65 +127,9 @@ module WorkOS
|
|
|
135
127
|
}
|
|
136
128
|
|
|
137
129
|
response = client.request(post_request(path: '/sso/token', body: body))
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
WorkOS::Profile.new(response.body)
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
# Promote a DraftConnection created via the WorkOS.js embed such that the
|
|
144
|
-
# Enterprise users can begin signing into your application.
|
|
145
|
-
#
|
|
146
|
-
# @param [String] token The Draft Connection token that's been provided to
|
|
147
|
-
# you by the WorkOS.js
|
|
148
|
-
#
|
|
149
|
-
# @example
|
|
150
|
-
# WorkOS::SSO.promote_draft_connection(
|
|
151
|
-
# token: 'draft_conn_429u59js',
|
|
152
|
-
# )
|
|
153
|
-
# => true
|
|
154
|
-
#
|
|
155
|
-
# @return [Bool] - returns `true` if successful, `false` otherwise.
|
|
156
|
-
# @see https://github.com/workos-inc/ruby-idp-link-example
|
|
157
|
-
sig { params(token: String).returns(T::Boolean) }
|
|
158
|
-
def promote_draft_connection(token:)
|
|
159
|
-
request = post_request(
|
|
160
|
-
auth: true,
|
|
161
|
-
path: "/draft_connections/#{token}/activate",
|
|
162
|
-
)
|
|
163
|
-
|
|
164
|
-
response = client.request(request)
|
|
165
|
-
|
|
166
|
-
response.is_a? Net::HTTPSuccess
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
# Create a Connection
|
|
170
|
-
#
|
|
171
|
-
# @param [String] source The Draft Connection token that's been provided
|
|
172
|
-
# to you by WorkOS.js
|
|
173
|
-
#
|
|
174
|
-
# @example
|
|
175
|
-
# WorkOS::SSO.create_connection(source: 'draft_conn_429u59js')
|
|
176
|
-
# => #<WorkOS::Connection:0x00007fb6e4193d20
|
|
177
|
-
# @id="conn_02DRA1XNSJDZ19A31F183ECQW9",
|
|
178
|
-
# @name="Foo Corp",
|
|
179
|
-
# @connection_type="OktaSAML",
|
|
180
|
-
# @domains=
|
|
181
|
-
# [{:object=>"connection_domain",
|
|
182
|
-
# :id=>"domain_01E6PK9N3XMD8RHWF7S66380AR",
|
|
183
|
-
# :domain=>"example.com"}]>
|
|
184
|
-
#
|
|
185
|
-
# @return [WorkOS::Connection]
|
|
186
|
-
sig { params(source: String).returns(WorkOS::Connection) }
|
|
187
|
-
def create_connection(source:)
|
|
188
|
-
request = post_request(
|
|
189
|
-
auth: true,
|
|
190
|
-
path: '/connections',
|
|
191
|
-
body: { source: source },
|
|
192
|
-
)
|
|
193
|
-
|
|
194
|
-
response = execute_request(request: request)
|
|
130
|
+
check_and_raise_profile_and_token_error(response: response)
|
|
195
131
|
|
|
196
|
-
WorkOS::
|
|
132
|
+
WorkOS::ProfileAndToken.new(response.body)
|
|
197
133
|
end
|
|
198
134
|
|
|
199
135
|
# Retrieve connections.
|
|
@@ -203,6 +139,8 @@ module WorkOS
|
|
|
203
139
|
# provider descriptor.
|
|
204
140
|
# @option options [String] domain The domain of the connection to be
|
|
205
141
|
# retrieved.
|
|
142
|
+
# @option options [String] organization_id The id of the organization
|
|
143
|
+
# of the connections to be retrieved.
|
|
206
144
|
# @option options [String] limit Maximum number of records to return.
|
|
207
145
|
# @option options [String] before Pagination cursor to receive records
|
|
208
146
|
# before a provided Connection ID.
|
|
@@ -213,7 +151,7 @@ module WorkOS
|
|
|
213
151
|
sig do
|
|
214
152
|
params(
|
|
215
153
|
options: T::Hash[Symbol, String],
|
|
216
|
-
).returns(
|
|
154
|
+
).returns(WorkOS::Types::ListStruct)
|
|
217
155
|
end
|
|
218
156
|
def list_connections(options = {})
|
|
219
157
|
response = execute_request(
|
|
@@ -224,7 +162,15 @@ module WorkOS
|
|
|
224
162
|
),
|
|
225
163
|
)
|
|
226
164
|
|
|
227
|
-
JSON.parse(response.body)
|
|
165
|
+
parsed_response = JSON.parse(response.body)
|
|
166
|
+
connections = parsed_response['data'].map do |connection|
|
|
167
|
+
::WorkOS::Connection.new(connection.to_json)
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
WorkOS::Types::ListStruct.new(
|
|
171
|
+
data: connections,
|
|
172
|
+
list_metadata: parsed_response['listMetadata'],
|
|
173
|
+
)
|
|
228
174
|
end
|
|
229
175
|
|
|
230
176
|
# Get a Connection
|
|
@@ -282,11 +228,17 @@ module WorkOS
|
|
|
282
228
|
params(
|
|
283
229
|
domain: T.nilable(String),
|
|
284
230
|
provider: T.nilable(String),
|
|
231
|
+
connection: T.nilable(String),
|
|
285
232
|
).void
|
|
286
233
|
end
|
|
287
|
-
def
|
|
288
|
-
|
|
289
|
-
|
|
234
|
+
def validate_authorization_url_arguments(
|
|
235
|
+
domain:,
|
|
236
|
+
provider:,
|
|
237
|
+
connection:
|
|
238
|
+
)
|
|
239
|
+
if [domain, provider, connection].all?(&:nil?)
|
|
240
|
+
raise ArgumentError, 'Either connection, domain, or ' \
|
|
241
|
+
'provider is required.'
|
|
290
242
|
end
|
|
291
243
|
|
|
292
244
|
return unless provider && !PROVIDERS.include?(provider)
|
|
@@ -296,10 +248,10 @@ module WorkOS
|
|
|
296
248
|
end
|
|
297
249
|
|
|
298
250
|
sig { params(response: Net::HTTPResponse).void }
|
|
299
|
-
def
|
|
251
|
+
def check_and_raise_profile_and_token_error(response:)
|
|
300
252
|
begin
|
|
301
253
|
body = JSON.parse(response.body)
|
|
302
|
-
return if body['profile']
|
|
254
|
+
return if body['access_token'] && body['profile']
|
|
303
255
|
|
|
304
256
|
message = body['message']
|
|
305
257
|
request_id = response['x-request-id']
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# typed: strict
|
|
3
|
+
|
|
4
|
+
module WorkOS
|
|
5
|
+
module Types
|
|
6
|
+
# This DirectoryGroupStruct acts as a typed interface
|
|
7
|
+
# for the DirectoryGroup class
|
|
8
|
+
class DirectoryGroupStruct < T::Struct
|
|
9
|
+
const :id, String
|
|
10
|
+
const :name, String
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# typed: strict
|
|
3
|
+
|
|
4
|
+
module WorkOS
|
|
5
|
+
module Types
|
|
6
|
+
# This DirectoryStruct acts as a typed interface
|
|
7
|
+
# for the Directory class
|
|
8
|
+
class DirectoryStruct < T::Struct
|
|
9
|
+
const :id, String
|
|
10
|
+
const :name, String
|
|
11
|
+
const :domain, String
|
|
12
|
+
const :type, String
|
|
13
|
+
const :state, String
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# typed: strict
|
|
3
|
+
|
|
4
|
+
module WorkOS
|
|
5
|
+
module Types
|
|
6
|
+
# The DirectoryUserStruct acts as a typed interface
|
|
7
|
+
# for the DirectoryUser class
|
|
8
|
+
class DirectoryUserStruct < T::Struct
|
|
9
|
+
const :id, String
|
|
10
|
+
const :idp_id, String
|
|
11
|
+
const :emails, T::Array[T.untyped]
|
|
12
|
+
const :first_name, T.nilable(String)
|
|
13
|
+
const :last_name, T.nilable(String)
|
|
14
|
+
const :username, T.nilable(String)
|
|
15
|
+
const :state, T.nilable(String)
|
|
16
|
+
const :raw_attributes, T::Hash[Symbol, Object]
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
data/lib/workos/types.rb
CHANGED
|
@@ -6,11 +6,14 @@ module WorkOS
|
|
|
6
6
|
# so we're using Sorbet throughout this Ruby gem.
|
|
7
7
|
module Types
|
|
8
8
|
require_relative 'types/connection_struct'
|
|
9
|
+
require_relative 'types/directory_struct'
|
|
10
|
+
require_relative 'types/directory_group_struct'
|
|
9
11
|
require_relative 'types/intent_enum'
|
|
10
12
|
require_relative 'types/list_struct'
|
|
11
13
|
require_relative 'types/organization_struct'
|
|
12
14
|
require_relative 'types/passwordless_session_struct'
|
|
13
15
|
require_relative 'types/profile_struct'
|
|
14
16
|
require_relative 'types/provider_enum'
|
|
17
|
+
require_relative 'types/directory_user_struct'
|
|
15
18
|
end
|
|
16
19
|
end
|
data/lib/workos/version.rb
CHANGED
data/lib/workos.rb
CHANGED
|
@@ -32,11 +32,16 @@ module WorkOS
|
|
|
32
32
|
autoload :AuditTrail, 'workos/audit_trail'
|
|
33
33
|
autoload :Connection, 'workos/connection'
|
|
34
34
|
autoload :DirectorySync, 'workos/directory_sync'
|
|
35
|
+
autoload :Directory, 'workos/directory'
|
|
36
|
+
autoload :DirectoryGroup, 'workos/directory_group'
|
|
35
37
|
autoload :Organization, 'workos/organization'
|
|
38
|
+
autoload :Organizations, 'workos/organizations'
|
|
36
39
|
autoload :Passwordless, 'workos/passwordless'
|
|
37
40
|
autoload :Portal, 'workos/portal'
|
|
38
41
|
autoload :Profile, 'workos/profile'
|
|
42
|
+
autoload :ProfileAndToken, 'workos/profile_and_token'
|
|
39
43
|
autoload :SSO, 'workos/sso'
|
|
44
|
+
autoload :DirectoryUser, 'workos/directory_user'
|
|
40
45
|
|
|
41
46
|
# Errors
|
|
42
47
|
autoload :APIError, 'workos/errors'
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
# This file is autogenerated. Do not edit it by hand. Regenerate it with:
|
|
2
|
+
# srb rbi gems
|
|
3
|
+
|
|
4
|
+
# typed: strict
|
|
5
|
+
#
|
|
6
|
+
# If you would like to make changes to this file, great! Please create the gem's shim here:
|
|
7
|
+
#
|
|
8
|
+
# https://github.com/sorbet/sorbet-typed/new/master?filename=lib/addressable/all/addressable.rbi
|
|
9
|
+
#
|
|
10
|
+
# addressable-2.7.0
|
|
11
|
+
|
|
12
|
+
module Addressable
|
|
13
|
+
end
|
|
14
|
+
module Addressable::VERSION
|
|
15
|
+
end
|
|
16
|
+
module Addressable::IDNA
|
|
17
|
+
def self.lookup_unicode_combining_class(codepoint); end
|
|
18
|
+
def self.lookup_unicode_compatibility(codepoint); end
|
|
19
|
+
def self.lookup_unicode_composition(unpacked); end
|
|
20
|
+
def self.lookup_unicode_lowercase(codepoint); end
|
|
21
|
+
def self.punycode_adapt(delta, numpoints, firsttime); end
|
|
22
|
+
def self.punycode_basic?(codepoint); end
|
|
23
|
+
def self.punycode_decode(punycode); end
|
|
24
|
+
def self.punycode_decode_digit(codepoint); end
|
|
25
|
+
def self.punycode_delimiter?(codepoint); end
|
|
26
|
+
def self.punycode_encode(unicode); end
|
|
27
|
+
def self.punycode_encode_digit(d); end
|
|
28
|
+
def self.to_ascii(input); end
|
|
29
|
+
def self.to_unicode(input); end
|
|
30
|
+
def self.unicode_compose(unpacked); end
|
|
31
|
+
def self.unicode_compose_pair(ch_one, ch_two); end
|
|
32
|
+
def self.unicode_decompose(unpacked); end
|
|
33
|
+
def self.unicode_decompose_hangul(codepoint); end
|
|
34
|
+
def self.unicode_downcase(input); end
|
|
35
|
+
def self.unicode_normalize_kc(input); end
|
|
36
|
+
def self.unicode_sort_canonical(unpacked); end
|
|
37
|
+
end
|
|
38
|
+
class Addressable::IDNA::PunycodeBadInput < StandardError
|
|
39
|
+
end
|
|
40
|
+
class Addressable::IDNA::PunycodeBigOutput < StandardError
|
|
41
|
+
end
|
|
42
|
+
class Addressable::IDNA::PunycodeOverflow < StandardError
|
|
43
|
+
end
|
|
44
|
+
class Addressable::URI
|
|
45
|
+
def +(uri); end
|
|
46
|
+
def ==(uri); end
|
|
47
|
+
def ===(uri); end
|
|
48
|
+
def absolute?; end
|
|
49
|
+
def authority; end
|
|
50
|
+
def authority=(new_authority); end
|
|
51
|
+
def basename; end
|
|
52
|
+
def default_port; end
|
|
53
|
+
def defer_validation; end
|
|
54
|
+
def display_uri; end
|
|
55
|
+
def domain; end
|
|
56
|
+
def dup; end
|
|
57
|
+
def empty?; end
|
|
58
|
+
def eql?(uri); end
|
|
59
|
+
def extname; end
|
|
60
|
+
def fragment; end
|
|
61
|
+
def fragment=(new_fragment); end
|
|
62
|
+
def freeze; end
|
|
63
|
+
def hash; end
|
|
64
|
+
def host; end
|
|
65
|
+
def host=(new_host); end
|
|
66
|
+
def hostname; end
|
|
67
|
+
def hostname=(new_hostname); end
|
|
68
|
+
def inferred_port; end
|
|
69
|
+
def initialize(options = nil); end
|
|
70
|
+
def inspect; end
|
|
71
|
+
def ip_based?; end
|
|
72
|
+
def join!(uri); end
|
|
73
|
+
def join(uri); end
|
|
74
|
+
def merge!(uri); end
|
|
75
|
+
def merge(hash); end
|
|
76
|
+
def normalize!; end
|
|
77
|
+
def normalize; end
|
|
78
|
+
def normalized_authority; end
|
|
79
|
+
def normalized_fragment; end
|
|
80
|
+
def normalized_host; end
|
|
81
|
+
def normalized_password; end
|
|
82
|
+
def normalized_path; end
|
|
83
|
+
def normalized_port; end
|
|
84
|
+
def normalized_query(*flags); end
|
|
85
|
+
def normalized_scheme; end
|
|
86
|
+
def normalized_site; end
|
|
87
|
+
def normalized_user; end
|
|
88
|
+
def normalized_userinfo; end
|
|
89
|
+
def omit!(*components); end
|
|
90
|
+
def omit(*components); end
|
|
91
|
+
def origin; end
|
|
92
|
+
def origin=(new_origin); end
|
|
93
|
+
def password; end
|
|
94
|
+
def password=(new_password); end
|
|
95
|
+
def path; end
|
|
96
|
+
def path=(new_path); end
|
|
97
|
+
def port; end
|
|
98
|
+
def port=(new_port); end
|
|
99
|
+
def query; end
|
|
100
|
+
def query=(new_query); end
|
|
101
|
+
def query_values(return_type = nil); end
|
|
102
|
+
def query_values=(new_query_values); end
|
|
103
|
+
def relative?; end
|
|
104
|
+
def remove_composite_values; end
|
|
105
|
+
def replace_self(uri); end
|
|
106
|
+
def request_uri; end
|
|
107
|
+
def request_uri=(new_request_uri); end
|
|
108
|
+
def route_from(uri); end
|
|
109
|
+
def route_to(uri); end
|
|
110
|
+
def scheme; end
|
|
111
|
+
def scheme=(new_scheme); end
|
|
112
|
+
def self.convert_path(path); end
|
|
113
|
+
def self.encode(uri, return_type = nil); end
|
|
114
|
+
def self.encode_component(component, character_class = nil, upcase_encoded = nil); end
|
|
115
|
+
def self.escape(uri, return_type = nil); end
|
|
116
|
+
def self.form_encode(form_values, sort = nil); end
|
|
117
|
+
def self.form_unencode(encoded_value); end
|
|
118
|
+
def self.heuristic_parse(uri, hints = nil); end
|
|
119
|
+
def self.ip_based_schemes; end
|
|
120
|
+
def self.join(*uris); end
|
|
121
|
+
def self.normalize_component(component, character_class = nil, leave_encoded = nil); end
|
|
122
|
+
def self.normalize_path(path); end
|
|
123
|
+
def self.normalized_encode(uri, return_type = nil); end
|
|
124
|
+
def self.parse(uri); end
|
|
125
|
+
def self.port_mapping; end
|
|
126
|
+
def self.unencode(uri, return_type = nil, leave_encoded = nil); end
|
|
127
|
+
def self.unencode_component(uri, return_type = nil, leave_encoded = nil); end
|
|
128
|
+
def self.unescape(uri, return_type = nil, leave_encoded = nil); end
|
|
129
|
+
def self.unescape_component(uri, return_type = nil, leave_encoded = nil); end
|
|
130
|
+
def site; end
|
|
131
|
+
def site=(new_site); end
|
|
132
|
+
def split_path(path); end
|
|
133
|
+
def tld; end
|
|
134
|
+
def tld=(new_tld); end
|
|
135
|
+
def to_hash; end
|
|
136
|
+
def to_s; end
|
|
137
|
+
def to_str; end
|
|
138
|
+
def user; end
|
|
139
|
+
def user=(new_user); end
|
|
140
|
+
def userinfo; end
|
|
141
|
+
def userinfo=(new_userinfo); end
|
|
142
|
+
def validate; end
|
|
143
|
+
end
|
|
144
|
+
class Addressable::URI::InvalidURIError < StandardError
|
|
145
|
+
end
|
|
146
|
+
module Addressable::URI::CharacterClasses
|
|
147
|
+
end
|
|
148
|
+
class Addressable::Template
|
|
149
|
+
def ==(template); end
|
|
150
|
+
def eql?(template); end
|
|
151
|
+
def expand(mapping, processor = nil, normalize_values = nil); end
|
|
152
|
+
def extract(uri, processor = nil); end
|
|
153
|
+
def freeze; end
|
|
154
|
+
def generate(params = nil, recall = nil, options = nil); end
|
|
155
|
+
def initialize(pattern); end
|
|
156
|
+
def inspect; end
|
|
157
|
+
def join_values(operator, return_value); end
|
|
158
|
+
def keys; end
|
|
159
|
+
def match(uri, processor = nil); end
|
|
160
|
+
def named_captures; end
|
|
161
|
+
def names; end
|
|
162
|
+
def normalize_keys(mapping); end
|
|
163
|
+
def normalize_value(value); end
|
|
164
|
+
def ordered_variable_defaults; end
|
|
165
|
+
def parse_template_pattern(pattern, processor = nil); end
|
|
166
|
+
def partial_expand(mapping, processor = nil, normalize_values = nil); end
|
|
167
|
+
def pattern; end
|
|
168
|
+
def source; end
|
|
169
|
+
def to_regexp; end
|
|
170
|
+
def transform_capture(mapping, capture, processor = nil, normalize_values = nil); end
|
|
171
|
+
def transform_partial_capture(mapping, capture, processor = nil, normalize_values = nil); end
|
|
172
|
+
def variable_defaults; end
|
|
173
|
+
def variables; end
|
|
174
|
+
end
|
|
175
|
+
class Addressable::Template::InvalidTemplateValueError < StandardError
|
|
176
|
+
end
|
|
177
|
+
class Addressable::Template::InvalidTemplateOperatorError < StandardError
|
|
178
|
+
end
|
|
179
|
+
class Addressable::Template::TemplateOperatorAbortedError < StandardError
|
|
180
|
+
end
|
|
181
|
+
class Addressable::Template::MatchData
|
|
182
|
+
def [](key, len = nil); end
|
|
183
|
+
def captures; end
|
|
184
|
+
def initialize(uri, template, mapping); end
|
|
185
|
+
def inspect; end
|
|
186
|
+
def keys; end
|
|
187
|
+
def mapping; end
|
|
188
|
+
def names; end
|
|
189
|
+
def post_match; end
|
|
190
|
+
def pre_match; end
|
|
191
|
+
def string; end
|
|
192
|
+
def template; end
|
|
193
|
+
def to_a; end
|
|
194
|
+
def to_s; end
|
|
195
|
+
def uri; end
|
|
196
|
+
def values; end
|
|
197
|
+
def values_at(*indexes); end
|
|
198
|
+
def variables; end
|
|
199
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# This file is autogenerated. Do not edit it by hand. Regenerate it with:
|
|
2
|
+
# srb rbi gems
|
|
3
|
+
|
|
4
|
+
# typed: strict
|
|
5
|
+
#
|
|
6
|
+
# If you would like to make changes to this file, great! Please create the gem's shim here:
|
|
7
|
+
#
|
|
8
|
+
# https://github.com/sorbet/sorbet-typed/new/master?filename=lib/ast/all/ast.rbi
|
|
9
|
+
#
|
|
10
|
+
# ast-2.4.2
|
|
11
|
+
|
|
12
|
+
module AST
|
|
13
|
+
end
|
|
14
|
+
class AST::Node
|
|
15
|
+
def +(array); end
|
|
16
|
+
def <<(element); end
|
|
17
|
+
def ==(other); end
|
|
18
|
+
def append(element); end
|
|
19
|
+
def assign_properties(properties); end
|
|
20
|
+
def children; end
|
|
21
|
+
def clone; end
|
|
22
|
+
def concat(array); end
|
|
23
|
+
def deconstruct; end
|
|
24
|
+
def dup; end
|
|
25
|
+
def eql?(other); end
|
|
26
|
+
def fancy_type; end
|
|
27
|
+
def hash; end
|
|
28
|
+
def initialize(type, children = nil, properties = nil); end
|
|
29
|
+
def inspect(indent = nil); end
|
|
30
|
+
def original_dup; end
|
|
31
|
+
def to_a; end
|
|
32
|
+
def to_ast; end
|
|
33
|
+
def to_s(indent = nil); end
|
|
34
|
+
def to_sexp(indent = nil); end
|
|
35
|
+
def to_sexp_array; end
|
|
36
|
+
def type; end
|
|
37
|
+
def updated(type = nil, children = nil, properties = nil); end
|
|
38
|
+
end
|
|
39
|
+
class AST::Processor
|
|
40
|
+
include AST::Processor::Mixin
|
|
41
|
+
end
|
|
42
|
+
module AST::Processor::Mixin
|
|
43
|
+
def handler_missing(node); end
|
|
44
|
+
def process(node); end
|
|
45
|
+
def process_all(nodes); end
|
|
46
|
+
end
|
|
47
|
+
module AST::Sexp
|
|
48
|
+
def s(type, *children); end
|
|
49
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# This file is autogenerated. Do not edit it by hand. Regenerate it with:
|
|
2
|
+
# srb rbi gems
|
|
3
|
+
|
|
4
|
+
# typed: strict
|
|
5
|
+
#
|
|
6
|
+
# If you would like to make changes to this file, great! Please create the gem's shim here:
|
|
7
|
+
#
|
|
8
|
+
# https://github.com/sorbet/sorbet-typed/new/master?filename=lib/codecov/all/codecov.rbi
|
|
9
|
+
#
|
|
10
|
+
# codecov-0.2.15
|
|
11
|
+
|
|
12
|
+
module Codecov
|
|
13
|
+
end
|
|
14
|
+
class SimpleCov::Formatter::Codecov
|
|
15
|
+
def black(str); end
|
|
16
|
+
def build_params(ci); end
|
|
17
|
+
def create_report(report); end
|
|
18
|
+
def detect_ci; end
|
|
19
|
+
def display_header; end
|
|
20
|
+
def file_network; end
|
|
21
|
+
def file_to_codecov(file); end
|
|
22
|
+
def format(result, disable_net_blockers = nil); end
|
|
23
|
+
def green(str); end
|
|
24
|
+
def gzip_report(report); end
|
|
25
|
+
def handle_report_response(report); end
|
|
26
|
+
def net_blockers(switch); end
|
|
27
|
+
def red(str); end
|
|
28
|
+
def result_to_codecov(result); end
|
|
29
|
+
def result_to_codecov_coverage(result); end
|
|
30
|
+
def result_to_codecov_messages(result); end
|
|
31
|
+
def result_to_codecov_report(result); end
|
|
32
|
+
def retry_request(req, https); end
|
|
33
|
+
def shortened_filename(file); end
|
|
34
|
+
def upload_to_codecov(ci, report); end
|
|
35
|
+
def upload_to_v2(url, report, query, query_without_token); end
|
|
36
|
+
def upload_to_v4(url, report, query, query_without_token); end
|
|
37
|
+
end
|