From 58e2b69b3baa95ac4121c94d2317fc552c335d00 Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Fri, 8 Mar 2024 00:10:53 +0000 Subject: [PATCH] ci: regenerated with OpenAPI Doc 0.4.0, Speakeasy CLI 1.204.1 --- .speakeasy/gen.lock | 18 +- README.md | 14 +- RELEASES.md | 12 +- USAGE.md | 1 + docs/models/shared/interactiontype.md | 2 + docs/models/shared/targetsdk.md | 1 + docs/sdks/apiendpoints/README.md | 10 +- docs/sdks/apis/README.md | 8 +- docs/sdks/auth/README.md | 3 + docs/sdks/embeds/README.md | 5 +- docs/sdks/events/README.md | 5 +- docs/sdks/metadata/README.md | 5 +- docs/sdks/requests/README.md | 3 + docs/sdks/schemas/README.md | 12 +- gen.yaml | 3 +- py.typed | 1 + setup.py | 2 +- src/speakeasy/_hooks/sdkhooks.py | 9 +- src/speakeasy/apiendpoints.py | 173 +++++++++-------- src/speakeasy/apis.py | 131 ++++++------- src/speakeasy/auth.py | 59 +++--- src/speakeasy/embeds.py | 60 +++--- src/speakeasy/events.py | 75 ++++---- src/speakeasy/metadata.py | 64 ++++--- src/speakeasy/models/shared/__init__.py | 1 + src/speakeasy/models/shared/clievent.py | 11 +- .../models/shared/interactiontype.py | 16 ++ src/speakeasy/models/shared/targetsdk.py | 3 + src/speakeasy/requests.py | 67 +++---- src/speakeasy/schemas.py | 178 +++++++++--------- src/speakeasy/sdkconfiguration.py | 6 +- src/speakeasy/utils/utils.py | 107 +++++------ 32 files changed, 581 insertions(+), 484 deletions(-) create mode 100644 py.typed create mode 100644 src/speakeasy/models/shared/interactiontype.py diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 5202a05e..2eea1fe0 100755 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,25 +1,26 @@ lockVersion: 2.0.0 id: b0b519b1-d1d3-43b2-82dd-b4292eadd4b0 management: - docChecksum: 78317aabbf8200a3d43be677bd6fe435 + docChecksum: 64b423d1904e6c12d31973957d033247 docVersion: 0.4.0 - speakeasyVersion: 1.202.0 - generationVersion: 2.277.0 - releaseVersion: 5.3.2 - configChecksum: affd4a37f328a37e21923e7294b7f345 + speakeasyVersion: 1.204.1 + generationVersion: 2.279.1 + releaseVersion: 5.4.0 + configChecksum: b7b3a76dd38b581e75d3bacbb60538ec repoURL: https://github.com/speakeasy-api/speakeasy-client-sdk-python.git repoSubDirectory: . installationURL: https://github.com/speakeasy-api/speakeasy-client-sdk-python.git published: true features: python: - core: 4.5.0 + core: 4.5.1 downloadStreams: 0.0.2 examples: 2.81.3 globalSecurity: 2.83.4 globalServerURLs: 2.82.1 globals: 2.81.1 inputOutputModels: 2.83.1 + responseFormat: 0.1.0 retries: 2.82.1 serverIDs: 2.81.1 generatedFiles: @@ -33,6 +34,7 @@ generatedFiles: - src/speakeasy/embeds.py - src/speakeasy/events.py - src/speakeasy/sdk.py + - py.typed - pylintrc - setup.py - src/speakeasy/__init__.py @@ -99,6 +101,7 @@ generatedFiles: - src/speakeasy/models/shared/embedaccesstokenresponse.py - src/speakeasy/models/shared/embedtoken.py - src/speakeasy/models/shared/clievent.py + - src/speakeasy/models/shared/interactiontype.py - src/speakeasy/models/shared/targetsdk.py - src/speakeasy/models/shared/security.py - src/speakeasy/models/__init__.py @@ -207,8 +210,8 @@ generatedFiles: - docs/models/shared/embedaccesstokenresponse.md - docs/models/shared/embedtoken.md - docs/models/shared/generatebumptype.md - - docs/models/shared/interactiontype.md - docs/models/shared/clievent.md + - docs/models/shared/interactiontype.md - docs/models/shared/targetsdk.md - docs/models/shared/security.md - docs/sdks/speakeasy/README.md @@ -223,7 +226,6 @@ generatedFiles: - docs/sdks/events/README.md - USAGE.md - .gitattributes - - src/speakeasy/_hooks/registration.py - src/speakeasy/_hooks/sdkhooks.py - src/speakeasy/_hooks/types.py - src/speakeasy/_hooks/__init__.py diff --git a/README.md b/README.md index 6462c4b2..c3f0ba11 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ res = s.apis.get_apis(req) if res.apis is not None: # handle response pass + ``` @@ -143,6 +144,7 @@ except errors.SDKError as e: if res.cli_event_batch is not None: # handle response pass + ``` @@ -180,9 +182,10 @@ req = operations.DeleteAPIRequest( res = s.apis.delete_api(req) -if res.status_code == 200: +if res is not None: # handle response pass + ``` @@ -208,9 +211,10 @@ req = operations.DeleteAPIRequest( res = s.apis.delete_api(req) -if res.status_code == 200: +if res is not None: # handle response pass + ``` @@ -265,9 +269,10 @@ req = operations.DeleteAPIRequest( res = s.apis.delete_api(req) -if res.status_code == 200: +if res is not None: # handle response pass + ``` @@ -308,6 +313,7 @@ res = s.events.get_workspace_events(req) if res.cli_event_batch is not None: # handle response pass + ``` @@ -337,6 +343,7 @@ res = s.auth.get_workspace_access(req, if res.access_details is not None: # handle response pass + ``` If you'd like to override the default retry strategy for all operations that support retries, you can use the `retry_config` optional parameter when initializing the SDK: @@ -360,6 +367,7 @@ res = s.auth.get_workspace_access(req) if res.access_details is not None: # handle response pass + ``` diff --git a/RELEASES.md b/RELEASES.md index 2498452f..7e6c7ac0 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1316,4 +1316,14 @@ Based on: ### Generated - [python v5.3.2] . ### Releases -- [PyPI v5.3.2] https://pypi.org/project/speakeasy-client-sdk-python/5.3.2 - . \ No newline at end of file +- [PyPI v5.3.2] https://pypi.org/project/speakeasy-client-sdk-python/5.3.2 - . + +## 2024-03-08 00:10:44 +### Changes +Based on: +- OpenAPI Doc 0.4.0 https://docs.speakeasyapi.dev/openapi.yaml +- Speakeasy CLI 1.204.1 (2.279.1) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v5.4.0] . +### Releases +- [PyPI v5.4.0] https://pypi.org/project/speakeasy-client-sdk-python/5.4.0 - . \ No newline at end of file diff --git a/USAGE.md b/USAGE.md index eb3edd5b..ac71b57e 100644 --- a/USAGE.md +++ b/USAGE.md @@ -17,5 +17,6 @@ res = s.apis.get_apis(req) if res.apis is not None: # handle response pass + ``` \ No newline at end of file diff --git a/docs/models/shared/interactiontype.md b/docs/models/shared/interactiontype.md index 1f189c96..d6eb8225 100644 --- a/docs/models/shared/interactiontype.md +++ b/docs/models/shared/interactiontype.md @@ -7,8 +7,10 @@ Type of interaction. | Name | Value | | ----------------- | ----------------- | +| `CI_EXEC` | CI_EXEC | | `CLI_EXEC` | CLI_EXEC | | `TARGET_GENERATE` | TARGET_GENERATE | +| `TOMBSTONE` | TOMBSTONE | | `AUTHENTICATE` | AUTHENTICATE | | `QUICKSTART` | QUICKSTART | | `RUN` | RUN | diff --git a/docs/models/shared/targetsdk.md b/docs/models/shared/targetsdk.md index aed40a91..3fb8a1ba 100644 --- a/docs/models/shared/targetsdk.md +++ b/docs/models/shared/targetsdk.md @@ -10,6 +10,7 @@ | `id` | *str* | :heavy_check_mark: | Unique identifier of the target the same as `generate_gen_lock_id` | | `last_event_created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | Timestamp when the event was created in the database. | | `last_event_id` | *str* | :heavy_check_mark: | Unique identifier of the last event for the target | +| `last_event_interaction_type` | [shared.InteractionType](../../models/shared/interactiontype.md) | :heavy_check_mark: | Type of interaction. | | `commit_head` | *Optional[str]* | :heavy_minus_sign: | Remote commit ID. | | `continuous_integration_environment` | *Optional[str]* | :heavy_minus_sign: | Name of the CI environment. | | `generate_config_post_version` | *Optional[str]* | :heavy_minus_sign: | Version of the generated target (post generation) | diff --git a/docs/sdks/apiendpoints/README.md b/docs/sdks/apiendpoints/README.md index efac9258..d75f4f8e 100644 --- a/docs/sdks/apiendpoints/README.md +++ b/docs/sdks/apiendpoints/README.md @@ -41,9 +41,10 @@ req = operations.DeleteAPIEndpointRequest( res = s.api_endpoints.delete_api_endpoint(req) -if res.status_code == 200: +if res is not None: # handle response pass + ``` ### Parameters @@ -91,6 +92,7 @@ res = s.api_endpoints.find_api_endpoint(req) if res.api_endpoint is not None: # handle response pass + ``` ### Parameters @@ -138,6 +140,7 @@ res = s.api_endpoints.generate_open_api_spec_for_api_endpoint(req) if res.generate_open_api_spec_diff is not None: # handle response pass + ``` ### Parameters @@ -184,6 +187,7 @@ res = s.api_endpoints.generate_postman_collection_for_api_endpoint(req) if res.postman_collection is not None: # handle response pass + ``` ### Parameters @@ -228,6 +232,7 @@ res = s.api_endpoints.get_all_api_endpoints(req) if res.api_endpoints is not None: # handle response pass + ``` ### Parameters @@ -273,6 +278,7 @@ res = s.api_endpoints.get_all_for_version_api_endpoints(req) if res.api_endpoints is not None: # handle response pass + ``` ### Parameters @@ -319,6 +325,7 @@ res = s.api_endpoints.get_api_endpoint(req) if res.api_endpoint is not None: # handle response pass + ``` ### Parameters @@ -373,6 +380,7 @@ res = s.api_endpoints.upsert_api_endpoint(req) if res.api_endpoint is not None: # handle response pass + ``` ### Parameters diff --git a/docs/sdks/apis/README.md b/docs/sdks/apis/README.md index 8db6bad8..4b889522 100644 --- a/docs/sdks/apis/README.md +++ b/docs/sdks/apis/README.md @@ -38,9 +38,10 @@ req = operations.DeleteAPIRequest( res = s.apis.delete_api(req) -if res.status_code == 200: +if res is not None: # handle response pass + ``` ### Parameters @@ -87,6 +88,7 @@ res = s.apis.generate_open_api_spec(req) if res.generate_open_api_spec_diff is not None: # handle response pass + ``` ### Parameters @@ -132,6 +134,7 @@ res = s.apis.generate_postman_collection(req) if res.postman_collection is not None: # handle response pass + ``` ### Parameters @@ -177,6 +180,7 @@ res = s.apis.get_all_api_versions(req) if res.apis is not None: # handle response pass + ``` ### Parameters @@ -220,6 +224,7 @@ res = s.apis.get_apis(req) if res.apis is not None: # handle response pass + ``` ### Parameters @@ -270,6 +275,7 @@ res = s.apis.upsert_api(req) if res.api is not None: # handle response pass + ``` ### Parameters diff --git a/docs/sdks/auth/README.md b/docs/sdks/auth/README.md index 8004dd03..4bf1a5f6 100644 --- a/docs/sdks/auth/README.md +++ b/docs/sdks/auth/README.md @@ -34,6 +34,7 @@ res = s.auth.get_access_token(req) if res.access_token is not None: # handle response pass + ``` ### Parameters @@ -76,6 +77,7 @@ res = s.auth.get_workspace_access(req) if res.access_details is not None: # handle response pass + ``` ### Parameters @@ -118,6 +120,7 @@ res = s.auth.validate_api_key() if res.api_key_details is not None: # handle response pass + ``` diff --git a/docs/sdks/embeds/README.md b/docs/sdks/embeds/README.md index 8b8daf1d..0cd79b81 100644 --- a/docs/sdks/embeds/README.md +++ b/docs/sdks/embeds/README.md @@ -36,6 +36,7 @@ res = s.embeds.get_embed_access_token(req) if res.embed_access_token_response is not None: # handle response pass + ``` ### Parameters @@ -77,6 +78,7 @@ res = s.embeds.get_valid_embed_access_tokens() if res.embed_tokens is not None: # handle response pass + ``` @@ -112,9 +114,10 @@ req = operations.RevokeEmbedAccessTokenRequest( res = s.embeds.revoke_embed_access_token(req) -if res.status_code == 200: +if res is not None: # handle response pass + ``` ### Parameters diff --git a/docs/sdks/events/README.md b/docs/sdks/events/README.md index 38cd1dc0..08397c2c 100644 --- a/docs/sdks/events/README.md +++ b/docs/sdks/events/README.md @@ -35,6 +35,7 @@ res = s.events.get_workspace_events(req) if res.cli_event_batch is not None: # handle response pass + ``` ### Parameters @@ -78,6 +79,7 @@ res = s.events.get_workspace_targets(req) if res.target_sdk_list is not None: # handle response pass + ``` ### Parameters @@ -133,9 +135,10 @@ req = operations.PostWorkspaceEventsRequest( res = s.events.post_workspace_events(req) -if res.status_code == 200: +if res is not None: # handle response pass + ``` ### Parameters diff --git a/docs/sdks/metadata/README.md b/docs/sdks/metadata/README.md index fbb9bc02..3a307d0b 100644 --- a/docs/sdks/metadata/README.md +++ b/docs/sdks/metadata/README.md @@ -37,9 +37,10 @@ req = operations.DeleteVersionMetadataRequest( res = s.metadata.delete_version_metadata(req) -if res.status_code == 200: +if res is not None: # handle response pass + ``` ### Parameters @@ -85,6 +86,7 @@ res = s.metadata.get_version_metadata(req) if res.version_metadata is not None: # handle response pass + ``` ### Parameters @@ -134,6 +136,7 @@ res = s.metadata.insert_version_metadata(req) if res.version_metadata is not None: # handle response pass + ``` ### Parameters diff --git a/docs/sdks/requests/README.md b/docs/sdks/requests/README.md index e16fa3db..e79ee8b4 100644 --- a/docs/sdks/requests/README.md +++ b/docs/sdks/requests/README.md @@ -38,6 +38,7 @@ res = s.requests.generate_request_postman_collection(req) if res.postman_collection is not None: # handle response pass + ``` ### Parameters @@ -82,6 +83,7 @@ res = s.requests.get_request_from_event_log(req) if res.unbounded_request is not None: # handle response pass + ``` ### Parameters @@ -125,6 +127,7 @@ res = s.requests.query_event_log(req) if res.bounded_requests is not None: # handle response pass + ``` ### Parameters diff --git a/docs/sdks/schemas/README.md b/docs/sdks/schemas/README.md index b248d57f..81d6c8f8 100644 --- a/docs/sdks/schemas/README.md +++ b/docs/sdks/schemas/README.md @@ -41,9 +41,10 @@ req = operations.DeleteSchemaRequest( res = s.schemas.delete_schema(req) -if res.status_code == 200: +if res is not None: # handle response pass + ``` ### Parameters @@ -89,6 +90,7 @@ res = s.schemas.download_schema(req) if res.two_hundred_application_json_schema is not None: # handle response pass + ``` ### Parameters @@ -135,6 +137,7 @@ res = s.schemas.download_schema_revision(req) if res.two_hundred_application_json_schema is not None: # handle response pass + ``` ### Parameters @@ -181,6 +184,7 @@ res = s.schemas.get_schema(req) if res.schema is not None: # handle response pass + ``` ### Parameters @@ -228,6 +232,7 @@ res = s.schemas.get_schema_diff(req) if res.schema_diff is not None: # handle response pass + ``` ### Parameters @@ -275,6 +280,7 @@ res = s.schemas.get_schema_revision(req) if res.schema is not None: # handle response pass + ``` ### Parameters @@ -321,6 +327,7 @@ res = s.schemas.get_schemas(req) if res.classes is not None: # handle response pass + ``` ### Parameters @@ -370,9 +377,10 @@ req = operations.RegisterSchemaRequest( res = s.schemas.register_schema(req) -if res.status_code == 200: +if res is not None: # handle response pass + ``` ### Parameters diff --git a/gen.yaml b/gen.yaml index 738f4bab..ea5542bd 100644 --- a/gen.yaml +++ b/gen.yaml @@ -10,7 +10,7 @@ generation: auth: oAuth2ClientCredentialsEnabled: false python: - version: 5.3.2 + version: 5.4.0 additionalDependencies: dependencies: {} extraDependencies: @@ -31,3 +31,4 @@ python: maxMethodParams: 0 outputModelSuffix: output packageName: speakeasy-client-sdk-python + responseFormat: envelope diff --git a/py.typed b/py.typed new file mode 100644 index 00000000..3e38f1a9 --- /dev/null +++ b/py.typed @@ -0,0 +1 @@ +# Marker file for PEP 561. The package enables type hints. diff --git a/setup.py b/setup.py index 61c7a77f..9ffa1939 100644 --- a/setup.py +++ b/setup.py @@ -10,7 +10,7 @@ setuptools.setup( name="speakeasy-client-sdk-python", - version="5.3.2", + version="5.4.0", author="Speakeasy", description="Speakeasy API Client SDK for Python", long_description=long_description, diff --git a/src/speakeasy/_hooks/sdkhooks.py b/src/speakeasy/_hooks/sdkhooks.py index a9ba878f..867a0741 100644 --- a/src/speakeasy/_hooks/sdkhooks.py +++ b/src/speakeasy/_hooks/sdkhooks.py @@ -7,12 +7,11 @@ class SDKHooks(Hooks): - sdk_init_hooks: List[SDKInitHook] = [] - before_request_hooks: List[BeforeRequestHook] = [] - after_success_hooks: List[AfterSuccessHook] = [] - after_error_hooks: List[AfterErrorHook] = [] - def __init__(self): + self.sdk_init_hooks: List[SDKInitHook] = [] + self.before_request_hooks: List[BeforeRequestHook] = [] + self.after_success_hooks: List[AfterSuccessHook] = [] + self.after_error_hooks: List[AfterErrorHook] = [] init_hooks(self) def register_sdk_init_hook(self, hook: SDKInitHook) -> None: diff --git a/src/speakeasy/apiendpoints.py b/src/speakeasy/apiendpoints.py index dac97282..812fa8a7 100644 --- a/src/speakeasy/apiendpoints.py +++ b/src/speakeasy/apiendpoints.py @@ -29,20 +29,20 @@ def delete_api_endpoint(self, request: operations.DeleteAPIEndpointRequest) -> o base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.DeleteAPIEndpointRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/api_endpoints/{apiEndpointID}', request, self.sdk_configuration.globals) - headers = {} - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('DELETE', url, headers=headers).prepare(), + requests_http.Request('DELETE', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -59,19 +59,19 @@ def delete_api_endpoint(self, request: operations.DeleteAPIEndpointRequest) -> o raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.DeleteAPIEndpointResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.DeleteAPIEndpointResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: pass elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -87,20 +87,20 @@ def find_api_endpoint(self, request: operations.FindAPIEndpointRequest) -> opera base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.FindAPIEndpointRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/api_endpoints/find/{displayName}', request, self.sdk_configuration.globals) - headers = {} - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('GET', url, headers=headers).prepare(), + requests_http.Request('GET', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -117,23 +117,24 @@ def find_api_endpoint(self, request: operations.FindAPIEndpointRequest) -> opera raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.FindAPIEndpointResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.FindAPIEndpointResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[shared.APIEndpoint]) res.api_endpoint = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -149,20 +150,20 @@ def generate_open_api_spec_for_api_endpoint(self, request: operations.GenerateOp base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.GenerateOpenAPISpecForAPIEndpointRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/api_endpoints/{apiEndpointID}/generate/openapi', request, self.sdk_configuration.globals) - headers = {} - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('GET', url, headers=headers).prepare(), + requests_http.Request('GET', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -179,23 +180,24 @@ def generate_open_api_spec_for_api_endpoint(self, request: operations.GenerateOp raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GenerateOpenAPISpecForAPIEndpointResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GenerateOpenAPISpecForAPIEndpointResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[shared.GenerateOpenAPISpecDiff]) res.generate_open_api_spec_diff = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -210,23 +212,23 @@ def generate_postman_collection_for_api_endpoint(self, request: operations.Gener base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.GeneratePostmanCollectionForAPIEndpointRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/api_endpoints/{apiEndpointID}/generate/postman', request, self.sdk_configuration.globals) - headers = {} + + if callable(self.sdk_configuration.security): + headers, query_params = utils.get_security(self.sdk_configuration.security()) + else: + headers, query_params = utils.get_security(self.sdk_configuration.security) + if accept_header_override is not None: headers['Accept'] = accept_header_override.value else: headers['Accept'] = 'application/json;q=1, application/octet-stream;q=0' headers['user-agent'] = self.sdk_configuration.user_agent - - if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) - else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) - + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('GET', url, headers=headers).prepare(), + requests_http.Request('GET', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -243,22 +245,23 @@ def generate_postman_collection_for_api_endpoint(self, request: operations.Gener raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GeneratePostmanCollectionForAPIEndpointResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GeneratePostmanCollectionForAPIEndpointResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/octet-stream'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/octet-stream'): res.postman_collection = http_res else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -271,20 +274,20 @@ def get_all_api_endpoints(self, request: operations.GetAllAPIEndpointsRequest) - base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.GetAllAPIEndpointsRequest, base_url, '/v1/apis/{apiID}/api_endpoints', request, self.sdk_configuration.globals) - headers = {} - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('GET', url, headers=headers).prepare(), + requests_http.Request('GET', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -301,23 +304,24 @@ def get_all_api_endpoints(self, request: operations.GetAllAPIEndpointsRequest) - raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GetAllAPIEndpointsResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GetAllAPIEndpointsResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[List[shared.APIEndpoint]]) res.api_endpoints = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -330,20 +334,20 @@ def get_all_for_version_api_endpoints(self, request: operations.GetAllForVersion base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.GetAllForVersionAPIEndpointsRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/api_endpoints', request, self.sdk_configuration.globals) - headers = {} - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('GET', url, headers=headers).prepare(), + requests_http.Request('GET', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -360,23 +364,24 @@ def get_all_for_version_api_endpoints(self, request: operations.GetAllForVersion raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GetAllForVersionAPIEndpointsResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GetAllForVersionAPIEndpointsResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[List[shared.APIEndpoint]]) res.api_endpoints = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -389,20 +394,20 @@ def get_api_endpoint(self, request: operations.GetAPIEndpointRequest) -> operati base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.GetAPIEndpointRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/api_endpoints/{apiEndpointID}', request, self.sdk_configuration.globals) - headers = {} - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('GET', url, headers=headers).prepare(), + requests_http.Request('GET', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -419,23 +424,24 @@ def get_api_endpoint(self, request: operations.GetAPIEndpointRequest) -> operati raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GetAPIEndpointResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GetAPIEndpointResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[shared.APIEndpoint]) res.api_endpoint = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -450,7 +456,12 @@ def upsert_api_endpoint(self, request: operations.UpsertAPIEndpointRequest) -> o base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.UpsertAPIEndpointRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/api_endpoints/{apiEndpointID}', request, self.sdk_configuration.globals) - headers = {} + + if callable(self.sdk_configuration.security): + headers, query_params = utils.get_security(self.sdk_configuration.security()) + else: + headers, query_params = utils.get_security(self.sdk_configuration.security) + req_content_type, data, form = utils.serialize_request_body(request, operations.UpsertAPIEndpointRequest, "api_endpoint", False, False, 'json') if req_content_type is not None and req_content_type not in ('multipart/form-data', 'multipart/mixed'): headers['content-type'] = req_content_type @@ -458,17 +469,12 @@ def upsert_api_endpoint(self, request: operations.UpsertAPIEndpointRequest) -> o raise Exception('request body is required') headers['Accept'] = 'application/json' headers['user-agent'] = self.sdk_configuration.user_agent - - if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) - else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) - + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('PUT', url, data=data, files=form, headers=headers).prepare(), + requests_http.Request('PUT', url, params=query_params, data=data, files=form, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -485,23 +491,24 @@ def upsert_api_endpoint(self, request: operations.UpsertAPIEndpointRequest) -> o raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.UpsertAPIEndpointResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.UpsertAPIEndpointResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[shared.APIEndpoint]) res.api_endpoint = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res diff --git a/src/speakeasy/apis.py b/src/speakeasy/apis.py index f10ce42c..f8be6886 100644 --- a/src/speakeasy/apis.py +++ b/src/speakeasy/apis.py @@ -29,20 +29,20 @@ def delete_api(self, request: operations.DeleteAPIRequest) -> operations.DeleteA base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.DeleteAPIRequest, base_url, '/v1/apis/{apiID}/version/{versionID}', request, self.sdk_configuration.globals) - headers = {} - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('DELETE', url, headers=headers).prepare(), + requests_http.Request('DELETE', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -59,19 +59,19 @@ def delete_api(self, request: operations.DeleteAPIRequest) -> operations.DeleteA raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.DeleteAPIResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.DeleteAPIResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: pass elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -87,20 +87,20 @@ def generate_open_api_spec(self, request: operations.GenerateOpenAPISpecRequest) base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.GenerateOpenAPISpecRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/generate/openapi', request, self.sdk_configuration.globals) - headers = {} - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('GET', url, headers=headers).prepare(), + requests_http.Request('GET', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -117,23 +117,24 @@ def generate_open_api_spec(self, request: operations.GenerateOpenAPISpecRequest) raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GenerateOpenAPISpecResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GenerateOpenAPISpecResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[shared.GenerateOpenAPISpecDiff]) res.generate_open_api_spec_diff = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -148,23 +149,23 @@ def generate_postman_collection(self, request: operations.GeneratePostmanCollect base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.GeneratePostmanCollectionRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/generate/postman', request, self.sdk_configuration.globals) - headers = {} + + if callable(self.sdk_configuration.security): + headers, query_params = utils.get_security(self.sdk_configuration.security()) + else: + headers, query_params = utils.get_security(self.sdk_configuration.security) + if accept_header_override is not None: headers['Accept'] = accept_header_override.value else: headers['Accept'] = 'application/json;q=1, application/octet-stream;q=0' headers['user-agent'] = self.sdk_configuration.user_agent - - if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) - else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) - + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('GET', url, headers=headers).prepare(), + requests_http.Request('GET', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -181,22 +182,23 @@ def generate_postman_collection(self, request: operations.GeneratePostmanCollect raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GeneratePostmanCollectionResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GeneratePostmanCollectionResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/octet-stream'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/octet-stream'): res.postman_collection = http_res else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -212,16 +214,16 @@ def get_all_api_versions(self, request: operations.GetAllAPIVersionsRequest) -> base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.GetAllAPIVersionsRequest, base_url, '/v1/apis/{apiID}', request, self.sdk_configuration.globals) - headers = {} - query_params = utils.get_query_params(operations.GetAllAPIVersionsRequest, request, self.sdk_configuration.globals) - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + query_params = { **utils.get_query_params(operations.GetAllAPIVersionsRequest, request, self.sdk_configuration.globals), **query_params } + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( @@ -243,23 +245,24 @@ def get_all_api_versions(self, request: operations.GetAllAPIVersionsRequest) -> raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GetAllAPIVersionsResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GetAllAPIVersionsResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[List[shared.API]]) res.apis = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -275,16 +278,16 @@ def get_apis(self, request: operations.GetApisRequest) -> operations.GetApisResp base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = base_url + '/v1/apis' - headers = {} - query_params = utils.get_query_params(operations.GetApisRequest, request, self.sdk_configuration.globals) - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + query_params = { **utils.get_query_params(operations.GetApisRequest, request, self.sdk_configuration.globals), **query_params } + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( @@ -306,23 +309,24 @@ def get_apis(self, request: operations.GetApisRequest) -> operations.GetApisResp raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GetApisResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GetApisResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[List[shared.API]]) res.apis = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -338,7 +342,12 @@ def upsert_api(self, request: operations.UpsertAPIRequest) -> operations.UpsertA base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.UpsertAPIRequest, base_url, '/v1/apis/{apiID}', request, self.sdk_configuration.globals) - headers = {} + + if callable(self.sdk_configuration.security): + headers, query_params = utils.get_security(self.sdk_configuration.security()) + else: + headers, query_params = utils.get_security(self.sdk_configuration.security) + req_content_type, data, form = utils.serialize_request_body(request, operations.UpsertAPIRequest, "api", False, False, 'json') if req_content_type is not None and req_content_type not in ('multipart/form-data', 'multipart/mixed'): headers['content-type'] = req_content_type @@ -346,17 +355,12 @@ def upsert_api(self, request: operations.UpsertAPIRequest) -> operations.UpsertA raise Exception('request body is required') headers['Accept'] = 'application/json' headers['user-agent'] = self.sdk_configuration.user_agent - - if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) - else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) - + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('PUT', url, data=data, files=form, headers=headers).prepare(), + requests_http.Request('PUT', url, params=query_params, data=data, files=form, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -373,23 +377,24 @@ def upsert_api(self, request: operations.UpsertAPIRequest) -> operations.UpsertA raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.UpsertAPIResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.UpsertAPIResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[shared.API]) res.api = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res diff --git a/src/speakeasy/auth.py b/src/speakeasy/auth.py index 6b6ba647..0199e46c 100644 --- a/src/speakeasy/auth.py +++ b/src/speakeasy/auth.py @@ -22,14 +22,15 @@ def get_access_token(self, request: operations.GetAccessTokenRequest) -> operati base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = base_url + '/v1/auth/access_token' + headers = {} - query_params = utils.get_query_params(operations.GetAccessTokenRequest, request, self.sdk_configuration.globals) + query_params = {} + + query_params = { **utils.get_query_params(operations.GetAccessTokenRequest, request, self.sdk_configuration.globals), **query_params } headers['Accept'] = 'application/json' headers['user-agent'] = self.sdk_configuration.user_agent - client = self.sdk_configuration.client - try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, @@ -50,23 +51,24 @@ def get_access_token(self, request: operations.GetAccessTokenRequest) -> operati raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GetAccessTokenResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GetAccessTokenResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[shared.AccessToken]) res.access_token = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -81,16 +83,16 @@ def get_workspace_access(self, request: operations.GetWorkspaceAccessRequest, re base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = base_url + '/v1/workspace/access' - headers = {} - query_params = utils.get_query_params(operations.GetWorkspaceAccessRequest, request, self.sdk_configuration.globals) - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + query_params = { **utils.get_query_params(operations.GetWorkspaceAccessRequest, request, self.sdk_configuration.globals), **query_params } + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client global_retry_config = self.sdk_configuration.retry_config retry_config = retries @@ -100,7 +102,9 @@ def get_workspace_access(self, request: operations.GetWorkspaceAccessRequest, re else: retry_config = utils.RetryConfig('backoff', utils.BackoffStrategy(100, 2000, 1.5, 30000), True) + req = None def do_request(): + nonlocal req try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, @@ -130,18 +134,20 @@ def do_request(): '503' ])) - content_type = http_res.headers.get('Content-Type') - res = operations.GetWorkspaceAccessResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GetWorkspaceAccessResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[shared.AccessDetails]) res.access_details = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) + else: + raise errors.SDKError('unknown status code received', http_res.status_code, http_res.text, http_res) return res @@ -153,20 +159,20 @@ def validate_api_key(self) -> operations.ValidateAPIKeyResponse: base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = base_url + '/v1/auth/validate' - headers = {} - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('GET', url, headers=headers).prepare(), + requests_http.Request('GET', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -183,23 +189,24 @@ def validate_api_key(self) -> operations.ValidateAPIKeyResponse: raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.ValidateAPIKeyResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.ValidateAPIKeyResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[shared.APIKeyDetails]) res.api_key_details = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res diff --git a/src/speakeasy/embeds.py b/src/speakeasy/embeds.py index d988552b..c8271884 100644 --- a/src/speakeasy/embeds.py +++ b/src/speakeasy/embeds.py @@ -25,16 +25,16 @@ def get_embed_access_token(self, request: operations.GetEmbedAccessTokenRequest) base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = base_url + '/v1/workspace/embed-access-token' - headers = {} - query_params = utils.get_query_params(operations.GetEmbedAccessTokenRequest, request, self.sdk_configuration.globals) - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + query_params = { **utils.get_query_params(operations.GetEmbedAccessTokenRequest, request, self.sdk_configuration.globals), **query_params } + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( @@ -56,23 +56,24 @@ def get_embed_access_token(self, request: operations.GetEmbedAccessTokenRequest) raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GetEmbedAccessTokenResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GetEmbedAccessTokenResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[shared.EmbedAccessTokenResponse]) res.embed_access_token_response = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -85,20 +86,20 @@ def get_valid_embed_access_tokens(self) -> operations.GetValidEmbedAccessTokensR base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = base_url + '/v1/workspace/embed-access-tokens/valid' - headers = {} - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('GET', url, headers=headers).prepare(), + requests_http.Request('GET', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -115,23 +116,24 @@ def get_valid_embed_access_tokens(self) -> operations.GetValidEmbedAccessTokensR raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GetValidEmbedAccessTokensResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GetValidEmbedAccessTokensResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[List[shared.EmbedToken]]) res.embed_tokens = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -144,20 +146,20 @@ def revoke_embed_access_token(self, request: operations.RevokeEmbedAccessTokenRe base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.RevokeEmbedAccessTokenRequest, base_url, '/v1/workspace/embed-access-tokens/{tokenID}', request, self.sdk_configuration.globals) - headers = {} - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('DELETE', url, headers=headers).prepare(), + requests_http.Request('DELETE', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -174,19 +176,19 @@ def revoke_embed_access_token(self, request: operations.RevokeEmbedAccessTokenRe raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.RevokeEmbedAccessTokenResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.RevokeEmbedAccessTokenResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: pass elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res diff --git a/src/speakeasy/events.py b/src/speakeasy/events.py index ca9a8ccc..f8ba6cbf 100644 --- a/src/speakeasy/events.py +++ b/src/speakeasy/events.py @@ -22,16 +22,16 @@ def get_workspace_events(self, request: operations.GetWorkspaceEventsRequest) -> base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.GetWorkspaceEventsRequest, base_url, '/v1/workspace/{workspaceID}/events', request, self.sdk_configuration.globals) - headers = {} - query_params = utils.get_query_params(operations.GetWorkspaceEventsRequest, request, self.sdk_configuration.globals) - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + query_params = { **utils.get_query_params(operations.GetWorkspaceEventsRequest, request, self.sdk_configuration.globals), **query_params } + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( @@ -53,25 +53,27 @@ def get_workspace_events(self, request: operations.GetWorkspaceEventsRequest) -> raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GetWorkspaceEventsResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GetWorkspaceEventsResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[List[shared.CliEvent]]) res.cli_event_batch = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 500 and http_res.status_code < 600: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, errors.Error) - out.raw_response = http_res raise out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) + else: + raise errors.SDKError('unknown status code received', http_res.status_code, http_res.text, http_res) return res @@ -83,16 +85,16 @@ def get_workspace_targets(self, request: operations.GetWorkspaceTargetsRequest) base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.GetWorkspaceTargetsRequest, base_url, '/v1/workspace/{workspaceID}/events/targets', request, self.sdk_configuration.globals) - headers = {} - query_params = utils.get_query_params(operations.GetWorkspaceTargetsRequest, request, self.sdk_configuration.globals) - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + query_params = { **utils.get_query_params(operations.GetWorkspaceTargetsRequest, request, self.sdk_configuration.globals), **query_params } + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( @@ -114,25 +116,27 @@ def get_workspace_targets(self, request: operations.GetWorkspaceTargetsRequest) raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GetWorkspaceTargetsResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GetWorkspaceTargetsResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[List[shared.TargetSDK]]) res.target_sdk_list = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 500 and http_res.status_code < 600: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, errors.Error) - out.raw_response = http_res raise out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) + else: + raise errors.SDKError('unknown status code received', http_res.status_code, http_res.text, http_res) return res @@ -146,7 +150,12 @@ def post_workspace_events(self, request: operations.PostWorkspaceEventsRequest, base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.PostWorkspaceEventsRequest, base_url, '/v1/workspace/{workspaceID}/events', request, self.sdk_configuration.globals) - headers = {} + + if callable(self.sdk_configuration.security): + headers, query_params = utils.get_security(self.sdk_configuration.security()) + else: + headers, query_params = utils.get_security(self.sdk_configuration.security) + req_content_type, data, form = utils.serialize_request_body(request, operations.PostWorkspaceEventsRequest, "request_body", False, False, 'json') if req_content_type is not None and req_content_type not in ('multipart/form-data', 'multipart/mixed'): headers['content-type'] = req_content_type @@ -154,12 +163,7 @@ def post_workspace_events(self, request: operations.PostWorkspaceEventsRequest, raise Exception('request body is required') headers['Accept'] = 'application/json' headers['user-agent'] = self.sdk_configuration.user_agent - - if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) - else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) - + client = self.sdk_configuration.client global_retry_config = self.sdk_configuration.retry_config retry_config = retries @@ -169,11 +173,13 @@ def post_workspace_events(self, request: operations.PostWorkspaceEventsRequest, else: retry_config = utils.RetryConfig('backoff', utils.BackoffStrategy(100, 2000, 1.5, 30000), True) + req = None def do_request(): + nonlocal req try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('POST', url, data=data, files=form, headers=headers).prepare(), + requests_http.Request('POST', url, params=query_params, data=data, files=form, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -199,21 +205,22 @@ def do_request(): '503' ])) - content_type = http_res.headers.get('Content-Type') - res = operations.PostWorkspaceEventsResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.PostWorkspaceEventsResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code >= 200 and http_res.status_code < 300: pass elif http_res.status_code >= 400 and http_res.status_code < 500: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 500 and http_res.status_code < 600: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, errors.Error) - out.raw_response = http_res raise out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) + else: + raise errors.SDKError('unknown status code received', http_res.status_code, http_res.text, http_res) return res diff --git a/src/speakeasy/metadata.py b/src/speakeasy/metadata.py index 12baafe9..4d046fa4 100644 --- a/src/speakeasy/metadata.py +++ b/src/speakeasy/metadata.py @@ -22,20 +22,20 @@ def delete_version_metadata(self, request: operations.DeleteVersionMetadataReque base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.DeleteVersionMetadataRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/metadata/{metaKey}/{metaValue}', request, self.sdk_configuration.globals) - headers = {} - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('DELETE', url, headers=headers).prepare(), + requests_http.Request('DELETE', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -52,19 +52,19 @@ def delete_version_metadata(self, request: operations.DeleteVersionMetadataReque raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.DeleteVersionMetadataResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.DeleteVersionMetadataResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: pass elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -77,20 +77,20 @@ def get_version_metadata(self, request: operations.GetVersionMetadataRequest) -> base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.GetVersionMetadataRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/metadata', request, self.sdk_configuration.globals) - headers = {} - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('GET', url, headers=headers).prepare(), + requests_http.Request('GET', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -107,23 +107,24 @@ def get_version_metadata(self, request: operations.GetVersionMetadataRequest) -> raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GetVersionMetadataResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GetVersionMetadataResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[List[shared.VersionMetadata]]) res.version_metadata = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -136,7 +137,12 @@ def insert_version_metadata(self, request: operations.InsertVersionMetadataReque base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.InsertVersionMetadataRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/metadata', request, self.sdk_configuration.globals) - headers = {} + + if callable(self.sdk_configuration.security): + headers, query_params = utils.get_security(self.sdk_configuration.security()) + else: + headers, query_params = utils.get_security(self.sdk_configuration.security) + req_content_type, data, form = utils.serialize_request_body(request, operations.InsertVersionMetadataRequest, "version_metadata", False, False, 'json') if req_content_type is not None and req_content_type not in ('multipart/form-data', 'multipart/mixed'): headers['content-type'] = req_content_type @@ -144,17 +150,12 @@ def insert_version_metadata(self, request: operations.InsertVersionMetadataReque raise Exception('request body is required') headers['Accept'] = 'application/json' headers['user-agent'] = self.sdk_configuration.user_agent - - if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) - else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) - + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('POST', url, data=data, files=form, headers=headers).prepare(), + requests_http.Request('POST', url, params=query_params, data=data, files=form, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -171,23 +172,24 @@ def insert_version_metadata(self, request: operations.InsertVersionMetadataReque raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.InsertVersionMetadataResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.InsertVersionMetadataResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[shared.VersionMetadata]) res.version_metadata = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res diff --git a/src/speakeasy/models/shared/__init__.py b/src/speakeasy/models/shared/__init__.py index 8aeeb74b..ccddc0c3 100644 --- a/src/speakeasy/models/shared/__init__.py +++ b/src/speakeasy/models/shared/__init__.py @@ -14,6 +14,7 @@ from .filter_ import * from .filters import * from .generateopenapispecdiff import * +from .interactiontype import * from .requestmetadata import * from .schema import * from .schemadiff import * diff --git a/src/speakeasy/models/shared/clievent.py b/src/speakeasy/models/shared/clievent.py index 65c9d5ba..c8eeba9d 100644 --- a/src/speakeasy/models/shared/clievent.py +++ b/src/speakeasy/models/shared/clievent.py @@ -3,6 +3,7 @@ from __future__ import annotations import dataclasses import dateutil.parser +from .interactiontype import InteractionType from dataclasses_json import Undefined, dataclass_json from datetime import datetime from enum import Enum @@ -17,16 +18,6 @@ class GenerateBumpType(str, Enum): CUSTOM = 'custom' NONE = 'none' -class InteractionType(str, Enum): - r"""Type of interaction.""" - CLI_EXEC = 'CLI_EXEC' - TARGET_GENERATE = 'TARGET_GENERATE' - AUTHENTICATE = 'AUTHENTICATE' - QUICKSTART = 'QUICKSTART' - RUN = 'RUN' - CONFIGURE = 'CONFIGURE' - PUBLISH = 'PUBLISH' - @dataclass_json(undefined=Undefined.EXCLUDE) @dataclasses.dataclass diff --git a/src/speakeasy/models/shared/interactiontype.py b/src/speakeasy/models/shared/interactiontype.py new file mode 100644 index 00000000..fdbc41f7 --- /dev/null +++ b/src/speakeasy/models/shared/interactiontype.py @@ -0,0 +1,16 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum + +class InteractionType(str, Enum): + r"""Type of interaction.""" + CI_EXEC = 'CI_EXEC' + CLI_EXEC = 'CLI_EXEC' + TARGET_GENERATE = 'TARGET_GENERATE' + TOMBSTONE = 'TOMBSTONE' + AUTHENTICATE = 'AUTHENTICATE' + QUICKSTART = 'QUICKSTART' + RUN = 'RUN' + CONFIGURE = 'CONFIGURE' + PUBLISH = 'PUBLISH' diff --git a/src/speakeasy/models/shared/targetsdk.py b/src/speakeasy/models/shared/targetsdk.py index b2ba9fe0..87946fe4 100644 --- a/src/speakeasy/models/shared/targetsdk.py +++ b/src/speakeasy/models/shared/targetsdk.py @@ -3,6 +3,7 @@ from __future__ import annotations import dataclasses import dateutil.parser +from .interactiontype import InteractionType from dataclasses_json import Undefined, dataclass_json from datetime import datetime from speakeasy import utils @@ -22,6 +23,8 @@ class TargetSDK: r"""Timestamp when the event was created in the database.""" last_event_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('last_event_id') }}) r"""Unique identifier of the last event for the target""" + last_event_interaction_type: InteractionType = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('last_event_interaction_type') }}) + r"""Type of interaction.""" commit_head: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('commit_head'), 'exclude': lambda f: f is None }}) r"""Remote commit ID.""" continuous_integration_environment: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('continuous_integration_environment'), 'exclude': lambda f: f is None }}) diff --git a/src/speakeasy/requests.py b/src/speakeasy/requests.py index 01ec9ea0..a12ea6f7 100644 --- a/src/speakeasy/requests.py +++ b/src/speakeasy/requests.py @@ -30,23 +30,23 @@ def generate_request_postman_collection(self, request: operations.GenerateReques base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.GenerateRequestPostmanCollectionRequest, base_url, '/v1/eventlog/{requestID}/generate/postman', request, self.sdk_configuration.globals) - headers = {} + + if callable(self.sdk_configuration.security): + headers, query_params = utils.get_security(self.sdk_configuration.security()) + else: + headers, query_params = utils.get_security(self.sdk_configuration.security) + if accept_header_override is not None: headers['Accept'] = accept_header_override.value else: headers['Accept'] = 'application/json;q=1, application/octet-stream;q=0' headers['user-agent'] = self.sdk_configuration.user_agent - - if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) - else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) - + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('GET', url, headers=headers).prepare(), + requests_http.Request('GET', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -63,22 +63,23 @@ def generate_request_postman_collection(self, request: operations.GenerateReques raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GenerateRequestPostmanCollectionResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GenerateRequestPostmanCollectionResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/octet-stream'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/octet-stream'): res.postman_collection = http_res else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -91,20 +92,20 @@ def get_request_from_event_log(self, request: operations.GetRequestFromEventLogR base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.GetRequestFromEventLogRequest, base_url, '/v1/eventlog/{requestID}', request, self.sdk_configuration.globals) - headers = {} - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('GET', url, headers=headers).prepare(), + requests_http.Request('GET', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -121,23 +122,24 @@ def get_request_from_event_log(self, request: operations.GetRequestFromEventLogR raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GetRequestFromEventLogResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GetRequestFromEventLogResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[shared.UnboundedRequest]) res.unbounded_request = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -153,16 +155,16 @@ def query_event_log(self, request: operations.QueryEventLogRequest) -> operation base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = base_url + '/v1/eventlog/query' - headers = {} - query_params = utils.get_query_params(operations.QueryEventLogRequest, request, self.sdk_configuration.globals) - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + query_params = { **utils.get_query_params(operations.QueryEventLogRequest, request, self.sdk_configuration.globals), **query_params } + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( @@ -184,23 +186,24 @@ def query_event_log(self, request: operations.QueryEventLogRequest) -> operation raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.QueryEventLogResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.QueryEventLogResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[List[shared.BoundedRequest]]) res.bounded_requests = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res diff --git a/src/speakeasy/schemas.py b/src/speakeasy/schemas.py index 796fec65..4dacf59b 100644 --- a/src/speakeasy/schemas.py +++ b/src/speakeasy/schemas.py @@ -31,20 +31,20 @@ def delete_schema(self, request: operations.DeleteSchemaRequest) -> operations.D base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.DeleteSchemaRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/schema/{revisionID}', request, self.sdk_configuration.globals) - headers = {} - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('DELETE', url, headers=headers).prepare(), + requests_http.Request('DELETE', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -61,19 +61,19 @@ def delete_schema(self, request: operations.DeleteSchemaRequest) -> operations.D raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.DeleteSchemaResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.DeleteSchemaResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: pass elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -86,23 +86,23 @@ def download_schema(self, request: operations.DownloadSchemaRequest, accept_head base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.DownloadSchemaRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/schema/download', request, self.sdk_configuration.globals) - headers = {} + + if callable(self.sdk_configuration.security): + headers, query_params = utils.get_security(self.sdk_configuration.security()) + else: + headers, query_params = utils.get_security(self.sdk_configuration.security) + if accept_header_override is not None: headers['Accept'] = accept_header_override.value else: headers['Accept'] = 'application/json;q=1, application/x-yaml;q=0' headers['user-agent'] = self.sdk_configuration.user_agent - - if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) - else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) - + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('GET', url, headers=headers).prepare(), + requests_http.Request('GET', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -119,24 +119,25 @@ def download_schema(self, request: operations.DownloadSchemaRequest, accept_head raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.DownloadSchemaResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.DownloadSchemaResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): res.two_hundred_application_json_schema = http_res - elif utils.match_content_type(content_type, 'application/x-yaml'): + elif utils.match_content_type(http_res.headers.get('Content-Type'), 'application/x-yaml'): res.two_hundred_application_x_yaml_schema = http_res else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -149,23 +150,23 @@ def download_schema_revision(self, request: operations.DownloadSchemaRevisionReq base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.DownloadSchemaRevisionRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/schema/{revisionID}/download', request, self.sdk_configuration.globals) - headers = {} + + if callable(self.sdk_configuration.security): + headers, query_params = utils.get_security(self.sdk_configuration.security()) + else: + headers, query_params = utils.get_security(self.sdk_configuration.security) + if accept_header_override is not None: headers['Accept'] = accept_header_override.value else: headers['Accept'] = 'application/json;q=1, application/x-yaml;q=0' headers['user-agent'] = self.sdk_configuration.user_agent - - if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) - else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) - + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('GET', url, headers=headers).prepare(), + requests_http.Request('GET', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -182,24 +183,25 @@ def download_schema_revision(self, request: operations.DownloadSchemaRevisionReq raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.DownloadSchemaRevisionResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.DownloadSchemaRevisionResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): res.two_hundred_application_json_schema = http_res - elif utils.match_content_type(content_type, 'application/x-yaml'): + elif utils.match_content_type(http_res.headers.get('Content-Type'), 'application/x-yaml'): res.two_hundred_application_x_yaml_schema = http_res else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -215,20 +217,20 @@ def get_schema(self, request: operations.GetSchemaRequest) -> operations.GetSche base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.GetSchemaRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/schema', request, self.sdk_configuration.globals) - headers = {} - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('GET', url, headers=headers).prepare(), + requests_http.Request('GET', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -245,23 +247,24 @@ def get_schema(self, request: operations.GetSchemaRequest) -> operations.GetSche raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GetSchemaResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GetSchemaResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[shared.Schema]) res.schema = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -274,20 +277,20 @@ def get_schema_diff(self, request: operations.GetSchemaDiffRequest) -> operation base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.GetSchemaDiffRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/schema/{baseRevisionID}/diff/{targetRevisionID}', request, self.sdk_configuration.globals) - headers = {} - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('GET', url, headers=headers).prepare(), + requests_http.Request('GET', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -304,23 +307,24 @@ def get_schema_diff(self, request: operations.GetSchemaDiffRequest) -> operation raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GetSchemaDiffResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GetSchemaDiffResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[shared.SchemaDiff]) res.schema_diff = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -336,20 +340,20 @@ def get_schema_revision(self, request: operations.GetSchemaRevisionRequest) -> o base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.GetSchemaRevisionRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/schema/{revisionID}', request, self.sdk_configuration.globals) - headers = {} - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('GET', url, headers=headers).prepare(), + requests_http.Request('GET', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -366,23 +370,24 @@ def get_schema_revision(self, request: operations.GetSchemaRevisionRequest) -> o raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GetSchemaRevisionResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GetSchemaRevisionResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[shared.Schema]) res.schema = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -398,20 +403,20 @@ def get_schemas(self, request: operations.GetSchemasRequest) -> operations.GetSc base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.GetSchemasRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/schemas', request, self.sdk_configuration.globals) - headers = {} - headers['Accept'] = 'application/json' - headers['user-agent'] = self.sdk_configuration.user_agent if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + headers, query_params = utils.get_security(self.sdk_configuration.security()) else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + headers, query_params = utils.get_security(self.sdk_configuration.security) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('GET', url, headers=headers).prepare(), + requests_http.Request('GET', url, params=query_params, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -428,23 +433,24 @@ def get_schemas(self, request: operations.GetSchemasRequest) -> operations.GetSc raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.GetSchemasResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.GetSchemasResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[List[shared.Schema]]) res.classes = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res @@ -460,7 +466,12 @@ def register_schema(self, request: operations.RegisterSchemaRequest) -> operatio base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = utils.generate_url(operations.RegisterSchemaRequest, base_url, '/v1/apis/{apiID}/version/{versionID}/schema', request, self.sdk_configuration.globals) - headers = {} + + if callable(self.sdk_configuration.security): + headers, query_params = utils.get_security(self.sdk_configuration.security()) + else: + headers, query_params = utils.get_security(self.sdk_configuration.security) + req_content_type, data, form = utils.serialize_request_body(request, operations.RegisterSchemaRequest, "request_body", False, False, 'multipart') if req_content_type is not None and req_content_type not in ('multipart/form-data', 'multipart/mixed'): headers['content-type'] = req_content_type @@ -468,17 +479,12 @@ def register_schema(self, request: operations.RegisterSchemaRequest) -> operatio raise Exception('request body is required') headers['Accept'] = 'application/json' headers['user-agent'] = self.sdk_configuration.user_agent - - if callable(self.sdk_configuration.security): - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) - else: - client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) - + client = self.sdk_configuration.client try: req = self.sdk_configuration.get_hooks().before_request( hook_ctx, - requests_http.Request('POST', url, data=data, files=form, headers=headers).prepare(), + requests_http.Request('POST', url, params=query_params, data=data, files=form, headers=headers).prepare(), ) http_res = client.send(req) except Exception as e: @@ -495,19 +501,19 @@ def register_schema(self, request: operations.RegisterSchemaRequest) -> operatio raise result http_res = result - content_type = http_res.headers.get('Content-Type') - res = operations.RegisterSchemaResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + res = operations.RegisterSchemaResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type'), raw_response=http_res) if http_res.status_code == 200: pass elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) else: - if utils.match_content_type(content_type, 'application/json'): + if utils.match_content_type(http_res.headers.get('Content-Type'), 'application/json'): out = utils.unmarshal_json(http_res.text, Optional[errors.Error]) res.error = out else: + content_type = http_res.headers.get('Content-Type') raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) return res diff --git a/src/speakeasy/sdkconfiguration.py b/src/speakeasy/sdkconfiguration.py index cbbdca4b..7dbcaff7 100644 --- a/src/speakeasy/sdkconfiguration.py +++ b/src/speakeasy/sdkconfiguration.py @@ -26,9 +26,9 @@ class SDKConfiguration: globals: Dict[str, Dict[str, Dict[str, Any]]] = field(default_factory=Dict) language: str = 'python' openapi_doc_version: str = '0.4.0' - sdk_version: str = '5.3.2' - gen_version: str = '2.277.0' - user_agent: str = 'speakeasy-sdk/python 5.3.2 2.277.0 0.4.0 speakeasy-client-sdk-python' + sdk_version: str = '5.4.0' + gen_version: str = '2.279.1' + user_agent: str = 'speakeasy-sdk/python 5.4.0 2.279.1 0.4.0 speakeasy-client-sdk-python' retry_config: RetryConfig = None _hooks: SDKHooks = None diff --git a/src/speakeasy/utils/utils.py b/src/speakeasy/utils/utils.py index 691091c8..44b7a2e0 100644 --- a/src/speakeasy/utils/utils.py +++ b/src/speakeasy/utils/utils.py @@ -4,7 +4,7 @@ import json import re import sys -from dataclasses import Field, dataclass, fields, is_dataclass, make_dataclass +from dataclasses import Field, fields, is_dataclass, make_dataclass from datetime import date, datetime from decimal import Decimal from email.message import Message @@ -14,30 +14,15 @@ from xmlrpc.client import boolean from typing_inspect import is_optional_type import dateutil.parser -import requests from dataclasses_json import DataClassJsonMixin -class SecurityClient: - client: requests.Session - query_params: Dict[str, str] = {} +def get_security(security: Any) -> Tuple[Dict[str, str], Dict[str, str]]: headers: Dict[str, str] = {} - - def __init__(self, client: requests.Session): - self.client = client - - def send(self, request: requests.PreparedRequest, **kwargs): - request.prepare_url(url=request.url, params=self.query_params) - request.headers.update(self.headers) - - return self.client.send(request, **kwargs) - - -def configure_security_client(client: requests.Session, security: dataclass): - client = SecurityClient(client) + query_params: Dict[str, str] = {} if security is None: - return client + return headers, query_params sec_fields: Tuple[Field, ...] = fields(security) for sec_field in sec_fields: @@ -49,35 +34,35 @@ def configure_security_client(client: requests.Session, security: dataclass): if metadata is None: continue if metadata.get('option'): - _parse_security_option(client, value) - return client + _parse_security_option(headers, query_params, value) + return headers, query_params if metadata.get('scheme'): # Special case for basic auth which could be a flattened struct if metadata.get("sub_type") == "basic" and not is_dataclass(value): - _parse_security_scheme(client, metadata, security) + _parse_security_scheme(headers, query_params, metadata, security) else: - _parse_security_scheme(client, metadata, value) + _parse_security_scheme(headers, query_params, metadata, value) - return client + return headers, query_params -def _parse_security_option(client: SecurityClient, option: dataclass): +def _parse_security_option(headers: Dict[str, str], query_params: Dict[str, str], option: Any): opt_fields: Tuple[Field, ...] = fields(option) for opt_field in opt_fields: metadata = opt_field.metadata.get('security') if metadata is None or metadata.get('scheme') is None: continue _parse_security_scheme( - client, metadata, getattr(option, opt_field.name)) + headers, query_params, metadata, getattr(option, opt_field.name)) -def _parse_security_scheme(client: SecurityClient, scheme_metadata: Dict, scheme: any): +def _parse_security_scheme(headers: Dict[str, str], query_params: Dict[str, str], scheme_metadata: Dict, scheme: Any): scheme_type = scheme_metadata.get('type') sub_type = scheme_metadata.get('sub_type') if is_dataclass(scheme): if scheme_type == 'http' and sub_type == 'basic': - _parse_basic_auth_scheme(client, scheme) + _parse_basic_auth_scheme(headers, scheme) return scheme_fields: Tuple[Field, ...] = fields(scheme) @@ -89,33 +74,33 @@ def _parse_security_scheme(client: SecurityClient, scheme_metadata: Dict, scheme value = getattr(scheme, scheme_field.name) _parse_security_scheme_value( - client, scheme_metadata, metadata, value) + headers, query_params, scheme_metadata, metadata, value) else: _parse_security_scheme_value( - client, scheme_metadata, scheme_metadata, scheme) + headers, query_params, scheme_metadata, scheme_metadata, scheme) -def _parse_security_scheme_value(client: SecurityClient, scheme_metadata: Dict, security_metadata: Dict, value: any): +def _parse_security_scheme_value(headers: Dict[str, str], query_params: Dict[str, str], scheme_metadata: Dict, security_metadata: Dict, value: Any): scheme_type = scheme_metadata.get('type') sub_type = scheme_metadata.get('sub_type') - header_name = security_metadata.get('field_name') + header_name = str(security_metadata.get('field_name')) if scheme_type == "apiKey": if sub_type == 'header': - client.headers[header_name] = value + headers[header_name] = value elif sub_type == 'query': - client.query_params[header_name] = value + query_params[header_name] = value else: raise Exception('not supported') elif scheme_type == "openIdConnect": - client.headers[header_name] = _apply_bearer(value) + headers[header_name] = _apply_bearer(value) elif scheme_type == 'oauth2': if sub_type != 'client_credentials': - client.headers[header_name] = _apply_bearer(value) + headers[header_name] = _apply_bearer(value) elif scheme_type == 'http': if sub_type == 'bearer': - client.headers[header_name] = _apply_bearer(value) + headers[header_name] = _apply_bearer(value) else: raise Exception('not supported') else: @@ -126,7 +111,7 @@ def _apply_bearer(token: str) -> str: return token.lower().startswith('bearer ') and token or f'Bearer {token}' -def _parse_basic_auth_scheme(client: SecurityClient, scheme: dataclass): +def _parse_basic_auth_scheme(headers: Dict[str, str], scheme: Any): username = "" password = "" @@ -145,11 +130,11 @@ def _parse_basic_auth_scheme(client: SecurityClient, scheme: dataclass): password = value data = f'{username}:{password}'.encode() - client.headers['Authorization'] = f'Basic {base64.b64encode(data).decode()}' + headers['Authorization'] = f'Basic {base64.b64encode(data).decode()}' -def generate_url(clazz: type, server_url: str, path: str, path_params: dataclass, - gbls: Dict[str, Dict[str, Dict[str, Any]]] = None) -> str: +def generate_url(clazz: type, server_url: str, path: str, path_params: Any, + gbls: Optional[Dict[str, Dict[str, Dict[str, Any]]]] = None) -> str: path_param_fields: Tuple[Field, ...] = fields(clazz) for field in path_param_fields: request_metadata = field.metadata.get('request') @@ -241,7 +226,7 @@ def template_url(url_with_params: str, params: Dict[str, str]) -> str: return url_with_params -def get_query_params(clazz: type, query_params: dataclass, gbls: Dict[str, Dict[str, Dict[str, Any]]] = None) -> Dict[ +def get_query_params(clazz: type, query_params: Any, gbls: Optional[Dict[str, Dict[str, Dict[str, Any]]]] = None) -> Dict[ str, List[str]]: params: Dict[str, List[str]] = {} @@ -287,7 +272,7 @@ def get_query_params(clazz: type, query_params: dataclass, gbls: Dict[str, Dict[ return params -def get_headers(headers_params: dataclass) -> Dict[str, str]: +def get_headers(headers_params: Any) -> Dict[str, str]: if headers_params is None: return {} @@ -308,7 +293,7 @@ def get_headers(headers_params: dataclass) -> Dict[str, str]: return headers -def _get_serialized_params(metadata: Dict, field_type: type, field_name: str, obj: any) -> Dict[str, str]: +def _get_serialized_params(metadata: Dict, field_type: type, field_name: str, obj: Any) -> Dict[str, str]: params: Dict[str, str] = {} serialization = metadata.get('serialization', '') @@ -319,7 +304,7 @@ def _get_serialized_params(metadata: Dict, field_type: type, field_name: str, ob return params -def _get_deep_object_query_params(metadata: Dict, field_name: str, obj: any) -> Dict[str, List[str]]: +def _get_deep_object_query_params(metadata: Dict, field_name: str, obj: Any) -> Dict[str, List[str]]: params: Dict[str, List[str]] = {} if obj is None: @@ -385,7 +370,7 @@ def _get_query_param_field_name(obj_field: Field) -> str: return obj_param_metadata.get("field_name", obj_field.name) -def _get_delimited_query_params(metadata: Dict, field_name: str, obj: any, delimiter: str) -> Dict[ +def _get_delimited_query_params(metadata: Dict, field_name: str, obj: Any, delimiter: str) -> Dict[ str, List[str]]: return _populate_form(field_name, metadata.get("explode", True), obj, _get_query_param_field_name, delimiter) @@ -399,8 +384,8 @@ def _get_delimited_query_params(metadata: Dict, field_name: str, obj: any, delim } -def serialize_request_body(request: dataclass, request_type: type, request_field_name: str, nullable: bool, optional: bool, serialization_method: str, encoder=None) -> Tuple[ - str, any, any]: +def serialize_request_body(request: Any, request_type: type, request_field_name: str, nullable: bool, optional: bool, serialization_method: str, encoder=None) -> Tuple[ + Optional[str], Optional[Any], Optional[Any]]: if request is None: if not nullable and optional: return None, None, None @@ -430,7 +415,7 @@ def serialize_request_body(request: dataclass, request_type: type, request_field request_val) -def serialize_content_type(field_name: str, request_type: any, media_type: str, request: dataclass, encoder=None) -> Tuple[str, any, List[List[any]]]: +def serialize_content_type(field_name: str, request_type: Any, media_type: str, request: Any, encoder=None) -> Tuple[Optional[str], Optional[Any], Optional[List[List[Any]]]]: if re.match(r'(application|text)\/.*?\+*json.*', media_type) is not None: return media_type, marshal_json(request, request_type, encoder), None if re.match(r'multipart\/.*', media_type) is not None: @@ -446,8 +431,8 @@ def serialize_content_type(field_name: str, request_type: any, media_type: str, f"invalid request body type {type(request)} for mediaType {media_type}") -def serialize_multipart_form(media_type: str, request: dataclass) -> Tuple[str, any, List[List[any]]]: - form: List[List[any]] = [] +def serialize_multipart_form(media_type: str, request: Any) -> Tuple[str, Any, List[List[Any]]]: + form: List[List[Any]] = [] request_fields = fields(request) for field in request_fields: @@ -502,7 +487,7 @@ def serialize_multipart_form(media_type: str, request: dataclass) -> Tuple[str, def serialize_dict(original: Dict, explode: bool, field_name, existing: Optional[Dict[str, List[str]]]) -> Dict[ str, List[str]]: if existing is None: - existing = [] + existing = {} if explode is True: for key, val in original.items(): @@ -520,7 +505,7 @@ def serialize_dict(original: Dict, explode: bool, field_name, existing: Optional return existing -def serialize_form_data(field_name: str, data: dataclass) -> Dict[str, any]: +def serialize_form_data(field_name: str, data: Any) -> Dict[str, Any]: form: Dict[str, List[str]] = {} if is_dataclass(data): @@ -562,7 +547,7 @@ def _get_form_field_name(obj_field: Field) -> str: return obj_param_metadata.get("field_name", obj_field.name) -def _populate_form(field_name: str, explode: boolean, obj: any, get_field_name_func: Callable, delimiter: str) -> \ +def _populate_form(field_name: str, explode: boolean, obj: Any, get_field_name_func: Callable, delimiter: str) -> \ Dict[str, List[str]]: params: Dict[str, List[str]] = {} @@ -597,7 +582,7 @@ def _populate_form(field_name: str, explode: boolean, obj: any, get_field_name_f continue if explode: - params[key] = _val_to_string(value) + params[key] = [_val_to_string(value)] else: items.append(f'{key}{delimiter}{_val_to_string(value)}') @@ -626,7 +611,7 @@ def _populate_form(field_name: str, explode: boolean, obj: any, get_field_name_f return params -def _serialize_header(explode: bool, obj: any) -> str: +def _serialize_header(explode: bool, obj: Any) -> str: if obj is None: return '' @@ -850,7 +835,7 @@ def list_decode(val: List): def union_encoder(all_encoders: Dict[str, Callable]): - def selective_encoder(val: any): + def selective_encoder(val: Any): if type(val) in all_encoders: return all_encoders[type(val)](val) return val @@ -858,7 +843,7 @@ def selective_encoder(val: any): def union_decoder(all_decoders: List[Callable]): - def selective_decoder(val: any): + def selective_decoder(val: Any): decoded = val for decoder in all_decoders: try: @@ -877,18 +862,18 @@ def override(_, _field_name=name): return override -def _val_to_string(val): +def _val_to_string(val) -> str: if isinstance(val, bool): return str(val).lower() if isinstance(val, datetime): - return val.isoformat().replace('+00:00', 'Z') + return str(val.isoformat().replace('+00:00', 'Z')) if isinstance(val, Enum): return str(val.value) return str(val) -def _populate_from_globals(param_name: str, value: any, param_type: str, gbls: Dict[str, Dict[str, Dict[str, Any]]]): +def _populate_from_globals(param_name: str, value: Any, param_type: str, gbls: Optional[Dict[str, Dict[str, Dict[str, Any]]]]): if value is None and gbls is not None: if 'parameters' in gbls: if param_type in gbls['parameters']: