speakeasy_client_sdk_ruby 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. checksums.yaml +7 -0
  2. data/lib/sdk/apiendpoints.rb +338 -0
  3. data/lib/sdk/apis.rb +264 -0
  4. data/lib/sdk/embeds.rb +128 -0
  5. data/lib/sdk/metadata.rb +144 -0
  6. data/lib/sdk/models/operations/deleteapi.rb +52 -0
  7. data/lib/sdk/models/operations/deleteapiendpoint.rb +55 -0
  8. data/lib/sdk/models/operations/deleteschema.rb +55 -0
  9. data/lib/sdk/models/operations/deleteversionmetadata.rb +58 -0
  10. data/lib/sdk/models/operations/downloadschema.rb +55 -0
  11. data/lib/sdk/models/operations/downloadschemarevision.rb +58 -0
  12. data/lib/sdk/models/operations/findapiendpoint.rb +59 -0
  13. data/lib/sdk/models/operations/generateopenapispec.rb +56 -0
  14. data/lib/sdk/models/operations/generateopenapispecforapiendpoint.rb +59 -0
  15. data/lib/sdk/models/operations/generatepostmancollection.rb +55 -0
  16. data/lib/sdk/models/operations/generatepostmancollectionforapiendpoint.rb +58 -0
  17. data/lib/sdk/models/operations/generaterequestpostmancollection.rb +52 -0
  18. data/lib/sdk/models/operations/getallapiendpoints.rb +52 -0
  19. data/lib/sdk/models/operations/getallapiversions.rb +72 -0
  20. data/lib/sdk/models/operations/getallforversionapiendpoints.rb +55 -0
  21. data/lib/sdk/models/operations/getapiendpoint.rb +59 -0
  22. data/lib/sdk/models/operations/getapis.rb +69 -0
  23. data/lib/sdk/models/operations/getembedaccesstoken.rb +60 -0
  24. data/lib/sdk/models/operations/getplugins.rb +38 -0
  25. data/lib/sdk/models/operations/getrequestfromeventlog.rb +53 -0
  26. data/lib/sdk/models/operations/getschema.rb +56 -0
  27. data/lib/sdk/models/operations/getschemadiff.rb +62 -0
  28. data/lib/sdk/models/operations/getschemarevision.rb +59 -0
  29. data/lib/sdk/models/operations/getschemas.rb +55 -0
  30. data/lib/sdk/models/operations/getvalidembedaccesstokens.rb +38 -0
  31. data/lib/sdk/models/operations/getversionmetadata.rb +55 -0
  32. data/lib/sdk/models/operations/insertversionmetadata.rb +60 -0
  33. data/lib/sdk/models/operations/queryeventlog.rb +53 -0
  34. data/lib/sdk/models/operations/registerschema.rb +86 -0
  35. data/lib/sdk/models/operations/revokeembedaccesstoken.rb +49 -0
  36. data/lib/sdk/models/operations/runplugin.rb +56 -0
  37. data/lib/sdk/models/operations/upsertapi.rb +57 -0
  38. data/lib/sdk/models/operations/upsertapiendpoint.rb +63 -0
  39. data/lib/sdk/models/operations/upsertplugin.rb +39 -0
  40. data/lib/sdk/models/operations/validateapikey.rb +35 -0
  41. data/lib/sdk/models/shared/api.rb +69 -0
  42. data/lib/sdk/models/shared/apiendpoint.rb +84 -0
  43. data/lib/sdk/models/shared/boundedrequest.rb +64 -0
  44. data/lib/sdk/models/shared/embedaccesstokenresponse.rb +25 -0
  45. data/lib/sdk/models/shared/embedtoken.rb +52 -0
  46. data/lib/sdk/models/shared/error.rb +28 -0
  47. data/lib/sdk/models/shared/filter.rb +31 -0
  48. data/lib/sdk/models/shared/filters.rb +34 -0
  49. data/lib/sdk/models/shared/generateopenapispecdiff.rb +28 -0
  50. data/lib/sdk/models/shared/plugin.rb +43 -0
  51. data/lib/sdk/models/shared/requestmetadata.rb +28 -0
  52. data/lib/sdk/models/shared/schema.rb +40 -0
  53. data/lib/sdk/models/shared/schemadiff.rb +48 -0
  54. data/lib/sdk/models/shared/security.rb +25 -0
  55. data/lib/sdk/models/shared/unboundedrequest.rb +37 -0
  56. data/lib/sdk/models/shared/versionmetadata.rb +57 -0
  57. data/lib/sdk/plugins.rb +140 -0
  58. data/lib/sdk/requests.rb +136 -0
  59. data/lib/sdk/schemas.rb +334 -0
  60. data/lib/sdk/sdk.rb +173 -0
  61. data/lib/sdk/utils/metadata_fields.rb +154 -0
  62. data/lib/sdk/utils/retries.rb +130 -0
  63. data/lib/sdk/utils/utils.rb +769 -0
  64. data/lib/speakeasy_client_sdk_ruby.rb +70 -0
  65. metadata +206 -0
@@ -0,0 +1,334 @@
1
+ # Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+ require 'faraday'
7
+ require 'faraday/multipart'
8
+ require 'sorbet-runtime'
9
+
10
+ module SpeakeasyClientSDK
11
+ extend T::Sig
12
+ class Schemas
13
+ extend T::Sig
14
+ sig { params(sdk: SpeakeasyClientSDK::SDK, client: Faraday::Connection, server_url: String, language: String, sdk_version: String, gen_version: String).void }
15
+ def initialize(sdk, client, server_url, language, sdk_version, gen_version)
16
+ @sdk = sdk
17
+ @client = client
18
+ @server_url = server_url
19
+ @language = language
20
+ @sdk_version = sdk_version
21
+ @gen_version = gen_version
22
+ end
23
+
24
+ sig { params(request: Operations::DeleteSchemaRequest).returns(Utils::FieldAugmented) }
25
+ def delete_schema(request)
26
+ # delete_schema - Delete a particular schema revision for an Api.
27
+ base_url = @server_url
28
+ url = Utils.generate_url(
29
+ Operations::DeleteSchemaRequest,
30
+ base_url,
31
+ '/v1/apis/{apiID}/version/{versionID}/schema/{revisionID}',
32
+ request
33
+ )
34
+ headers = {}
35
+ headers['Accept'] = 'application/json'
36
+ headers['user-agent'] = "speakeasy-sdk/#{@language} #{@sdk_version} #{@gen_version}"
37
+
38
+ r = @client.delete(url) do |req|
39
+ req.headers = headers
40
+ Utils.configure_request_security(req, @sdk.security) if !@sdk.nil? && !@sdk.security.nil?
41
+ end
42
+
43
+ content_type = r.headers.fetch('Content-Type', 'application/octet-stream')
44
+
45
+ res = Operations::DeleteSchemaResponse.new(
46
+ status_code: r.status, content_type: content_type, raw_response: r
47
+ )
48
+ if r.status == 200
49
+ else
50
+ if Utils.match_content_type(content_type, 'application/json')
51
+ out = Utils.unmarshal_complex(r.env.response_body, Shared::Error)
52
+ res.error = out
53
+ end
54
+ end
55
+ res
56
+ end
57
+
58
+ sig { params(request: Operations::DownloadSchemaRequest).returns(Utils::FieldAugmented) }
59
+ def download_schema(request)
60
+ # download_schema - Download the latest schema for a particular apiID.
61
+ base_url = @server_url
62
+ url = Utils.generate_url(
63
+ Operations::DownloadSchemaRequest,
64
+ base_url,
65
+ '/v1/apis/{apiID}/version/{versionID}/schema/download',
66
+ request
67
+ )
68
+ headers = {}
69
+ headers['Accept'] = 'application/json;q=1, application/json;q=0.7, application/x-yaml;q=0'
70
+ headers['user-agent'] = "speakeasy-sdk/#{@language} #{@sdk_version} #{@gen_version}"
71
+
72
+ r = @client.get(url) do |req|
73
+ req.headers = headers
74
+ Utils.configure_request_security(req, @sdk.security) if !@sdk.nil? && !@sdk.security.nil?
75
+ end
76
+
77
+ content_type = r.headers.fetch('Content-Type', 'application/octet-stream')
78
+
79
+ res = Operations::DownloadSchemaResponse.new(
80
+ status_code: r.status, content_type: content_type, raw_response: r
81
+ )
82
+ if r.status == 200
83
+ res.schema = r.env.response_body if Utils.match_content_type(content_type, 'application/json')
84
+ res.schema = r.env.response_body if Utils.match_content_type(content_type, 'application/x-yaml')
85
+ else
86
+ if Utils.match_content_type(content_type, 'application/json')
87
+ out = Utils.unmarshal_complex(r.env.response_body, Shared::Error)
88
+ res.error = out
89
+ end
90
+ end
91
+ res
92
+ end
93
+
94
+ sig { params(request: Operations::DownloadSchemaRevisionRequest).returns(Utils::FieldAugmented) }
95
+ def download_schema_revision(request)
96
+ # download_schema_revision - Download a particular schema revision for an Api.
97
+ base_url = @server_url
98
+ url = Utils.generate_url(
99
+ Operations::DownloadSchemaRevisionRequest,
100
+ base_url,
101
+ '/v1/apis/{apiID}/version/{versionID}/schema/{revisionID}/download',
102
+ request
103
+ )
104
+ headers = {}
105
+ headers['Accept'] = 'application/json;q=1, application/json;q=0.7, application/x-yaml;q=0'
106
+ headers['user-agent'] = "speakeasy-sdk/#{@language} #{@sdk_version} #{@gen_version}"
107
+
108
+ r = @client.get(url) do |req|
109
+ req.headers = headers
110
+ Utils.configure_request_security(req, @sdk.security) if !@sdk.nil? && !@sdk.security.nil?
111
+ end
112
+
113
+ content_type = r.headers.fetch('Content-Type', 'application/octet-stream')
114
+
115
+ res = Operations::DownloadSchemaRevisionResponse.new(
116
+ status_code: r.status, content_type: content_type, raw_response: r
117
+ )
118
+ if r.status == 200
119
+ res.schema = r.env.response_body if Utils.match_content_type(content_type, 'application/json')
120
+ res.schema = r.env.response_body if Utils.match_content_type(content_type, 'application/x-yaml')
121
+ else
122
+ if Utils.match_content_type(content_type, 'application/json')
123
+ out = Utils.unmarshal_complex(r.env.response_body, Shared::Error)
124
+ res.error = out
125
+ end
126
+ end
127
+ res
128
+ end
129
+
130
+ sig { params(request: Operations::GetSchemaRequest).returns(Utils::FieldAugmented) }
131
+ def get_schema(request)
132
+ # get_schema - Get information about the latest schema.
133
+ # Returns information about the last uploaded schema for a particular API version.
134
+ # This won't include the schema itself, that can be retrieved via the downloadSchema operation.
135
+ base_url = @server_url
136
+ url = Utils.generate_url(
137
+ Operations::GetSchemaRequest,
138
+ base_url,
139
+ '/v1/apis/{apiID}/version/{versionID}/schema',
140
+ request
141
+ )
142
+ headers = {}
143
+ headers['Accept'] = 'application/json;q=1, application/json;q=0'
144
+ headers['user-agent'] = "speakeasy-sdk/#{@language} #{@sdk_version} #{@gen_version}"
145
+
146
+ r = @client.get(url) do |req|
147
+ req.headers = headers
148
+ Utils.configure_request_security(req, @sdk.security) if !@sdk.nil? && !@sdk.security.nil?
149
+ end
150
+
151
+ content_type = r.headers.fetch('Content-Type', 'application/octet-stream')
152
+
153
+ res = Operations::GetSchemaResponse.new(
154
+ status_code: r.status, content_type: content_type, raw_response: r
155
+ )
156
+ if r.status == 200
157
+ if Utils.match_content_type(content_type, 'application/json')
158
+ out = Utils.unmarshal_complex(r.env.response_body, Shared::Schema)
159
+ res.schema = out
160
+ end
161
+ else
162
+ if Utils.match_content_type(content_type, 'application/json')
163
+ out = Utils.unmarshal_complex(r.env.response_body, Shared::Error)
164
+ res.error = out
165
+ end
166
+ end
167
+ res
168
+ end
169
+
170
+ sig { params(request: Operations::GetSchemaDiffRequest).returns(Utils::FieldAugmented) }
171
+ def get_schema_diff(request)
172
+ # get_schema_diff - Get a diff of two schema revisions for an Api.
173
+ base_url = @server_url
174
+ url = Utils.generate_url(
175
+ Operations::GetSchemaDiffRequest,
176
+ base_url,
177
+ '/v1/apis/{apiID}/version/{versionID}/schema/{baseRevisionID}/diff/{targetRevisionID}',
178
+ request
179
+ )
180
+ headers = {}
181
+ headers['Accept'] = 'application/json;q=1, application/json;q=0'
182
+ headers['user-agent'] = "speakeasy-sdk/#{@language} #{@sdk_version} #{@gen_version}"
183
+
184
+ r = @client.get(url) do |req|
185
+ req.headers = headers
186
+ Utils.configure_request_security(req, @sdk.security) if !@sdk.nil? && !@sdk.security.nil?
187
+ end
188
+
189
+ content_type = r.headers.fetch('Content-Type', 'application/octet-stream')
190
+
191
+ res = Operations::GetSchemaDiffResponse.new(
192
+ status_code: r.status, content_type: content_type, raw_response: r
193
+ )
194
+ if r.status == 200
195
+ if Utils.match_content_type(content_type, 'application/json')
196
+ out = Utils.unmarshal_complex(r.env.response_body, Shared::SchemaDiff)
197
+ res.schema_diff = out
198
+ end
199
+ else
200
+ if Utils.match_content_type(content_type, 'application/json')
201
+ out = Utils.unmarshal_complex(r.env.response_body, Shared::Error)
202
+ res.error = out
203
+ end
204
+ end
205
+ res
206
+ end
207
+
208
+ sig { params(request: Operations::GetSchemaRevisionRequest).returns(Utils::FieldAugmented) }
209
+ def get_schema_revision(request)
210
+ # get_schema_revision - Get information about a particular schema revision for an Api.
211
+ # Returns information about the last uploaded schema for a particular schema revision.
212
+ # This won't include the schema itself, that can be retrieved via the downloadSchema operation.
213
+ base_url = @server_url
214
+ url = Utils.generate_url(
215
+ Operations::GetSchemaRevisionRequest,
216
+ base_url,
217
+ '/v1/apis/{apiID}/version/{versionID}/schema/{revisionID}',
218
+ request
219
+ )
220
+ headers = {}
221
+ headers['Accept'] = 'application/json;q=1, application/json;q=0'
222
+ headers['user-agent'] = "speakeasy-sdk/#{@language} #{@sdk_version} #{@gen_version}"
223
+
224
+ r = @client.get(url) do |req|
225
+ req.headers = headers
226
+ Utils.configure_request_security(req, @sdk.security) if !@sdk.nil? && !@sdk.security.nil?
227
+ end
228
+
229
+ content_type = r.headers.fetch('Content-Type', 'application/octet-stream')
230
+
231
+ res = Operations::GetSchemaRevisionResponse.new(
232
+ status_code: r.status, content_type: content_type, raw_response: r
233
+ )
234
+ if r.status == 200
235
+ if Utils.match_content_type(content_type, 'application/json')
236
+ out = Utils.unmarshal_complex(r.env.response_body, Shared::Schema)
237
+ res.schema = out
238
+ end
239
+ else
240
+ if Utils.match_content_type(content_type, 'application/json')
241
+ out = Utils.unmarshal_complex(r.env.response_body, Shared::Error)
242
+ res.error = out
243
+ end
244
+ end
245
+ res
246
+ end
247
+
248
+ sig { params(request: Operations::GetSchemasRequest).returns(Utils::FieldAugmented) }
249
+ def get_schemas(request)
250
+ # get_schemas - Get information about all schemas associated with a particular apiID.
251
+ # Returns information the schemas associated with a particular apiID.
252
+ # This won't include the schemas themselves, they can be retrieved via the downloadSchema operation.
253
+ base_url = @server_url
254
+ url = Utils.generate_url(
255
+ Operations::GetSchemasRequest,
256
+ base_url,
257
+ '/v1/apis/{apiID}/version/{versionID}/schemas',
258
+ request
259
+ )
260
+ headers = {}
261
+ headers['Accept'] = 'application/json;q=1, application/json;q=0'
262
+ headers['user-agent'] = "speakeasy-sdk/#{@language} #{@sdk_version} #{@gen_version}"
263
+
264
+ r = @client.get(url) do |req|
265
+ req.headers = headers
266
+ Utils.configure_request_security(req, @sdk.security) if !@sdk.nil? && !@sdk.security.nil?
267
+ end
268
+
269
+ content_type = r.headers.fetch('Content-Type', 'application/octet-stream')
270
+
271
+ res = Operations::GetSchemasResponse.new(
272
+ status_code: r.status, content_type: content_type, raw_response: r
273
+ )
274
+ if r.status == 200
275
+ if Utils.match_content_type(content_type, 'application/json')
276
+ out = Utils.unmarshal_complex(r.env.response_body, T::Array[Shared::Schema])
277
+ res.schemata = out
278
+ end
279
+ else
280
+ if Utils.match_content_type(content_type, 'application/json')
281
+ out = Utils.unmarshal_complex(r.env.response_body, Shared::Error)
282
+ res.error = out
283
+ end
284
+ end
285
+ res
286
+ end
287
+
288
+ sig { params(request: Operations::RegisterSchemaRequest).returns(Utils::FieldAugmented) }
289
+ def register_schema(request)
290
+ # register_schema - Register a schema.
291
+ # Allows uploading a schema for a particular API version.
292
+ # This will be used to populate ApiEndpoints and used as a base for any schema generation if present.
293
+ base_url = @server_url
294
+ url = Utils.generate_url(
295
+ Operations::RegisterSchemaRequest,
296
+ base_url,
297
+ '/v1/apis/{apiID}/version/{versionID}/schema',
298
+ request
299
+ )
300
+ headers = {}
301
+ req_content_type, data, form = Utils.serialize_request_body(request, :request_body, :multipart)
302
+ headers['content-type'] = req_content_type
303
+ raise StandardError, 'request body is required' if data.nil? && form.nil?
304
+ headers['Accept'] = 'application/json'
305
+ headers['user-agent'] = "speakeasy-sdk/#{@language} #{@sdk_version} #{@gen_version}"
306
+
307
+ r = @client.post(url) do |req|
308
+ req.headers = headers
309
+ Utils.configure_request_security(req, @sdk.security) if !@sdk.nil? && !@sdk.security.nil?
310
+ if form
311
+ req.body = Utils.encode_form(form)
312
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
313
+ req.body = URI.encode_www_form(data)
314
+ else
315
+ req.body = data
316
+ end
317
+ end
318
+
319
+ content_type = r.headers.fetch('Content-Type', 'application/octet-stream')
320
+
321
+ res = Operations::RegisterSchemaResponse.new(
322
+ status_code: r.status, content_type: content_type, raw_response: r
323
+ )
324
+ if r.status == 200
325
+ else
326
+ if Utils.match_content_type(content_type, 'application/json')
327
+ out = Utils.unmarshal_complex(r.env.response_body, Shared::Error)
328
+ res.error = out
329
+ end
330
+ end
331
+ res
332
+ end
333
+ end
334
+ end
data/lib/sdk/sdk.rb ADDED
@@ -0,0 +1,173 @@
1
+ # Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+ require 'faraday'
7
+ require 'faraday/multipart'
8
+ require 'sorbet-runtime'
9
+ module SpeakeasyClientSDK
10
+ extend T::Sig
11
+ SERVER_PROD = 'prod'
12
+ SERVERS = {
13
+ SERVER_PROD: 'https://api.prod.speakeasyapi.dev'
14
+ }.freeze
15
+ class SDK
16
+ extend T::Sig
17
+
18
+ attr_accessor :api_endpoints, :apis, :embeds, :metadata, :plugins, :requests, :schemas
19
+
20
+ attr_accessor :security, :language, :sdk_version, :gen_version
21
+
22
+ sig do
23
+ params(security: Shared::Security,
24
+ server: String,
25
+ server_url: String,
26
+ url_params: T::Hash[Symbol, String],
27
+ client: Faraday::Request).void
28
+ end
29
+ def initialize(security: nil,
30
+ server: nil,
31
+ server_url: nil,
32
+ url_params: nil,
33
+ client: nil)
34
+
35
+ ## Instantiates the SDK configuring it with the provided parameters.
36
+ # @param [Shared::Security] security The security details required for authentication
37
+ # @param [String] server The server by name to use for all operations
38
+ # @param [String] server_url The server URL to use for all operations
39
+ # @param [Hash<Symbol, String>] url_params Parameters to optionally template the server URL with
40
+ # @param [Faraday::Request] client The faraday HTTP client to use for all operations
41
+
42
+ @client = Faraday.new(request: {
43
+ params_encoder: Faraday::FlatParamsEncoder
44
+ }) do |f|
45
+ f.request :multipart, {}
46
+ # f.response :logger
47
+ end
48
+
49
+
50
+
51
+
52
+ @security = nil
53
+ @server_url = SERVERS[SERVER_PROD]
54
+ @language = 'ruby'
55
+ @sdk_version = '1.0.1'
56
+ @gen_version = '2.35.9'
57
+ init_sdks
58
+ end
59
+
60
+ sig { params(server_url: String, params: T.nilable(T::Hash[Symbol, String])).void }
61
+ def config_server_url(server_url, params)
62
+ if params.nil?
63
+ @server_url = server_url
64
+ else
65
+ @server_url = Utils.template_url(server_url, params)
66
+ end
67
+ init_sdks
68
+ end
69
+
70
+ sig { params(server: String, params: T.nilable(T::Hash[Symbol, String])).void }
71
+ def config_server(server, params)
72
+ raise StandardError, 'Invalid server' if !SERVERS.include? server
73
+
74
+ config_server_url(SERVERS[server], params)
75
+ init_sdks
76
+ end
77
+
78
+ sig { params(security: Shared::Security).void }
79
+ def config_security(security)
80
+ @security = security
81
+ end
82
+
83
+ sig { void }
84
+ def init_sdks
85
+ @api_endpoints = ApiEndpoints.new(
86
+ self,
87
+ @client,
88
+ @server_url,
89
+ @language,
90
+ @sdk_version,
91
+ @gen_version
92
+ )
93
+ @apis = Apis.new(
94
+ self,
95
+ @client,
96
+ @server_url,
97
+ @language,
98
+ @sdk_version,
99
+ @gen_version
100
+ )
101
+ @embeds = Embeds.new(
102
+ self,
103
+ @client,
104
+ @server_url,
105
+ @language,
106
+ @sdk_version,
107
+ @gen_version
108
+ )
109
+ @metadata = Metadata.new(
110
+ self,
111
+ @client,
112
+ @server_url,
113
+ @language,
114
+ @sdk_version,
115
+ @gen_version
116
+ )
117
+ @plugins = Plugins.new(
118
+ self,
119
+ @client,
120
+ @server_url,
121
+ @language,
122
+ @sdk_version,
123
+ @gen_version
124
+ )
125
+ @requests = Requests.new(
126
+ self,
127
+ @client,
128
+ @server_url,
129
+ @language,
130
+ @sdk_version,
131
+ @gen_version
132
+ )
133
+ @schemas = Schemas.new(
134
+ self,
135
+ @client,
136
+ @server_url,
137
+ @language,
138
+ @sdk_version,
139
+ @gen_version
140
+ )
141
+ end
142
+
143
+
144
+ sig { returns(Utils::FieldAugmented) }
145
+ def validate_api_key
146
+ # validate_api_key - Validate the current api key.
147
+ base_url = @server_url
148
+ url = "#{base_url.delete_suffix('/')}/v1/auth/validate"
149
+ headers = {}
150
+ headers['Accept'] = 'application/json'
151
+ headers['user-agent'] = "speakeasy-sdk/#{@language} #{@sdk_version} #{@gen_version}"
152
+
153
+ r = @client.get(url) do |req|
154
+ req.headers = headers
155
+ Utils.configure_request_security(req, @sdk.security) if !@sdk.nil? && !@sdk.security.nil?
156
+ end
157
+
158
+ content_type = r.headers.fetch('Content-Type', 'application/octet-stream')
159
+
160
+ res = Operations::ValidateApiKeyResponse.new(
161
+ status_code: r.status, content_type: content_type, raw_response: r
162
+ )
163
+ if r.status == 200
164
+ else
165
+ if Utils.match_content_type(content_type, 'application/json')
166
+ out = Utils.unmarshal_complex(r.env.response_body, Shared::Error)
167
+ res.error = out
168
+ end
169
+ end
170
+ res
171
+ end
172
+ end
173
+ end
@@ -0,0 +1,154 @@
1
+ # Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+ module SpeakeasyClientSDK
7
+ module MetadataFields
8
+ extend T::Sig
9
+
10
+ class Field
11
+ attr_accessor :name, :type, :metadata
12
+
13
+ def initialize(name, type, metadata)
14
+ @name = name
15
+ @type = type
16
+ @metadata = metadata
17
+ end
18
+ end
19
+
20
+ module ClassMethods
21
+ extend T::Sig
22
+
23
+ def fields
24
+ @__fields__ = [] if @__fields__.nil?
25
+
26
+ @__fields__
27
+ end
28
+
29
+ def field(field_name, type, metadata = {})
30
+ attr_accessor field_name
31
+
32
+ fields << Field.new(field_name, type, metadata)
33
+ end
34
+
35
+ def unmarshal_single(field_type, value, decoder = nil)
36
+ if field_type.respond_to? :unmarshal_json
37
+ unmarshalled = field_type.unmarshal_json(value)
38
+ return unmarshalled
39
+ elsif field_type.to_s == 'Object'
40
+ # rubocop:disable Lint/SuppressedException
41
+ begin
42
+ value = JSON.parse(value)
43
+ rescue TypeError, JSON::ParserError
44
+ end
45
+ # rubocop:enable Lint/SuppressedException
46
+ return value
47
+ end
48
+ if decoder.nil?
49
+ value
50
+ else
51
+ decoder.call(value)
52
+ end
53
+ end
54
+
55
+ sig { params(json_obj: T.any(String, T::Hash[Symbol, String])).returns(Utils::FieldAugmented) }
56
+ def unmarshal_json(json_obj)
57
+ to_build = new
58
+ begin
59
+ d = JSON.parse(json_obj)
60
+ rescue TypeError, JSON::ParserError
61
+ d = json_obj
62
+ end
63
+ fields.each do |field|
64
+ field_type = field.type
65
+ if field.type.respond_to?(:types) && field.type.types.length == 2
66
+ type2 = field.type.types[1]
67
+ if type2.raw_type == NilClass
68
+ field_type = field.type.types[0]
69
+ field_type = field_type.raw_type if field_type.respond_to? :raw_type
70
+ end
71
+ end
72
+
73
+
74
+ key = "#{field.name}="
75
+ lookup = field.metadata.fetch(:format_json, {}).fetch(:letter_case, nil).call
76
+ value = d[lookup]
77
+ next if value.nil?
78
+
79
+ if field_type.to_s.start_with? 'T::Array'
80
+ inner_type = field_type.type.raw_type
81
+ unmarshalled_array = value.map { |f| unmarshal_single(inner_type, f) }
82
+ to_build.send(key, unmarshalled_array)
83
+ elsif field_type.to_s.start_with? 'T::Hash'
84
+ _, val_type = field_type.type.types
85
+ # rubocop:disable Style/HashTransformValues
86
+ unmarshalled_hash = value.map { |k, v| [k, unmarshal_single(val_type.raw_type, v)] }.to_h
87
+ # rubocop:enable Style/HashTransformValues
88
+ to_build.send(key, unmarshalled_hash)
89
+ else
90
+ decoder = field.metadata.fetch(:format_json, {}).fetch(:decoder, nil)
91
+ final_value = unmarshal_single(field_type, value, decoder)
92
+ to_build.send(key, final_value)
93
+ end
94
+ end
95
+ to_build
96
+ end
97
+ end
98
+
99
+ def initialize
100
+ instance = allocate
101
+ fields.each { |mod| instance.singleton_class.include(mod) }
102
+ instance.send(:initialize)
103
+ end
104
+
105
+ def self.included(base)
106
+ base.extend(ClassMethods)
107
+ end
108
+
109
+ def fields
110
+ self.class.fields
111
+ end
112
+
113
+ def field(field_name)
114
+ fields.each do |f|
115
+ return f if f.name == field_name
116
+ end
117
+ end
118
+
119
+ def marshal_single(field)
120
+ if field.respond_to? :marshal_json
121
+ field.marshal_json(encode: false)
122
+ else
123
+ Utils.val_to_string(field, primitives: false)
124
+ end
125
+ end
126
+
127
+ def marshal_json(encode: true)
128
+ d = {}
129
+ fields.sort_by(&:name).each do |field|
130
+ f = send(field.name)
131
+ next if f.nil?
132
+
133
+ format_json_meta = field.metadata[:format_json]
134
+ if !format_json_meta.nil? && format_json_meta.include?(:letter_case)
135
+ key = format_json_meta[:letter_case].call(field.name)
136
+ else
137
+ key = field.name
138
+ end
139
+ if f.is_a? Array
140
+ d[key] = f.map { |o| marshal_single(o) }
141
+ elsif f.is_a? Hash
142
+ d[key] = f.map { |k, v| [k, marshal_single(v)] }
143
+ else
144
+ d[key] = marshal_single(f)
145
+ end
146
+ end
147
+ if encode
148
+ JSON.dump(d)
149
+ else
150
+ d
151
+ end
152
+ end
153
+ end
154
+ end