restpki-ng-python-client 0.9.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- restpki_ng_python_client/__init__.py +200 -0
- restpki_ng_python_client/api/__init__.py +17 -0
- restpki_ng_python_client/api/authentication_api.py +2041 -0
- restpki_ng_python_client/api/cades_signature_api.py +2376 -0
- restpki_ng_python_client/api/document_keys_api.py +1199 -0
- restpki_ng_python_client/api/documents_api.py +868 -0
- restpki_ng_python_client/api/pades_signature_api.py +1797 -0
- restpki_ng_python_client/api/pades_visual_positioning_presets_api.py +869 -0
- restpki_ng_python_client/api/pdf_api.py +334 -0
- restpki_ng_python_client/api/signature_api.py +624 -0
- restpki_ng_python_client/api/signature_inspection_api.py +337 -0
- restpki_ng_python_client/api/signature_sessions_api.py +891 -0
- restpki_ng_python_client/api/timestamp_api.py +654 -0
- restpki_ng_python_client/api/upload_api.py +1124 -0
- restpki_ng_python_client/api/xml_signature_api.py +1781 -0
- restpki_ng_python_client/api_client.py +741 -0
- restpki_ng_python_client/api_response.py +21 -0
- restpki_ng_python_client/configuration.py +426 -0
- restpki_ng_python_client/exceptions.py +166 -0
- restpki_ng_python_client/file_utils.py +122 -0
- restpki_ng_python_client/models/__init__.py +165 -0
- restpki_ng_python_client/models/allocate_document_key_batch_request.py +96 -0
- restpki_ng_python_client/models/allocate_document_key_request.py +93 -0
- restpki_ng_python_client/models/attribute_certificate_model.py +141 -0
- restpki_ng_python_client/models/audit_package_options.py +90 -0
- restpki_ng_python_client/models/authentication_failures.py +45 -0
- restpki_ng_python_client/models/authentication_get_response.py +92 -0
- restpki_ng_python_client/models/authentication_post_request.py +116 -0
- restpki_ng_python_client/models/authentication_post_response.py +98 -0
- restpki_ng_python_client/models/authentications_post_request.py +95 -0
- restpki_ng_python_client/models/authentications_post_response.py +114 -0
- restpki_ng_python_client/models/authentications_post_signed_bytes_request.py +99 -0
- restpki_ng_python_client/models/authentications_post_signed_bytes_response.py +98 -0
- restpki_ng_python_client/models/auto_positioning_horizontal_directions.py +45 -0
- restpki_ng_python_client/models/auto_positioning_vertical_directions.py +45 -0
- restpki_ng_python_client/models/blockchains.py +45 -0
- restpki_ng_python_client/models/cades_signature_model.py +123 -0
- restpki_ng_python_client/models/cades_signature_post_request_v1.py +137 -0
- restpki_ng_python_client/models/cades_signature_post_request_v2.py +152 -0
- restpki_ng_python_client/models/cades_signature_post_request_v3.py +149 -0
- restpki_ng_python_client/models/cades_signature_post_response.py +120 -0
- restpki_ng_python_client/models/cades_signature_post_signed_bytes_request.py +92 -0
- restpki_ng_python_client/models/cades_signature_post_signed_bytes_response.py +106 -0
- restpki_ng_python_client/models/cades_signer_model.py +159 -0
- restpki_ng_python_client/models/cades_timestamp_model.py +140 -0
- restpki_ng_python_client/models/certificate_model.py +197 -0
- restpki_ng_python_client/models/certificate_reference_model.py +99 -0
- restpki_ng_python_client/models/certificate_requirement.py +95 -0
- restpki_ng_python_client/models/certificate_requirement_types.py +45 -0
- restpki_ng_python_client/models/certificate_summary.py +142 -0
- restpki_ng_python_client/models/certified_attribute_model.py +94 -0
- restpki_ng_python_client/models/certified_attribute_types.py +44 -0
- restpki_ng_python_client/models/cms_content_types.py +50 -0
- restpki_ng_python_client/models/cms_signature_options.py +109 -0
- restpki_ng_python_client/models/color_model.py +98 -0
- restpki_ng_python_client/models/commitment_type_model.py +99 -0
- restpki_ng_python_client/models/complete_authentication_request.py +93 -0
- restpki_ng_python_client/models/complete_authentication_response.py +103 -0
- restpki_ng_python_client/models/complete_signature_request.py +95 -0
- restpki_ng_python_client/models/complete_signature_request_v2.py +91 -0
- restpki_ng_python_client/models/create_signature_session_request.py +161 -0
- restpki_ng_python_client/models/create_signature_session_response.py +95 -0
- restpki_ng_python_client/models/digest_algorithm_and_value_model.py +103 -0
- restpki_ng_python_client/models/digest_algorithms.py +49 -0
- restpki_ng_python_client/models/document_file_model.py +137 -0
- restpki_ng_python_client/models/document_key_model.py +100 -0
- restpki_ng_python_client/models/document_key_query_response.py +110 -0
- restpki_ng_python_client/models/document_key_summary.py +100 -0
- restpki_ng_python_client/models/document_model.py +150 -0
- restpki_ng_python_client/models/document_query_response.py +93 -0
- restpki_ng_python_client/models/document_status.py +47 -0
- restpki_ng_python_client/models/document_summary.py +128 -0
- restpki_ng_python_client/models/error_model_v2.py +120 -0
- restpki_ng_python_client/models/file_model.py +114 -0
- restpki_ng_python_client/models/file_reference_model.py +137 -0
- restpki_ng_python_client/models/full_xml_signature_post_request.py +136 -0
- restpki_ng_python_client/models/general_name_choices.py +52 -0
- restpki_ng_python_client/models/general_name_model.py +108 -0
- restpki_ng_python_client/models/holder_types.py +45 -0
- restpki_ng_python_client/models/inspect_signature_failures.py +44 -0
- restpki_ng_python_client/models/inspect_signature_request.py +127 -0
- restpki_ng_python_client/models/inspect_signature_response.py +131 -0
- restpki_ng_python_client/models/multipart_upload_begin_response.py +95 -0
- restpki_ng_python_client/models/multipart_upload_end_request.py +95 -0
- restpki_ng_python_client/models/name_model.py +205 -0
- restpki_ng_python_client/models/namespace_model.py +99 -0
- restpki_ng_python_client/models/open_cades_signature_request_model.py +147 -0
- restpki_ng_python_client/models/open_signature_request_model.py +145 -0
- restpki_ng_python_client/models/open_xml_signature_request_model.py +151 -0
- restpki_ng_python_client/models/other_name_model.py +107 -0
- restpki_ng_python_client/models/pades_certification_level.py +47 -0
- restpki_ng_python_client/models/pades_horizontal_align.py +46 -0
- restpki_ng_python_client/models/pades_measurement_units.py +45 -0
- restpki_ng_python_client/models/pades_page_optimization_model.py +98 -0
- restpki_ng_python_client/models/pades_signature_model.py +113 -0
- restpki_ng_python_client/models/pades_signature_post_request_v1.py +167 -0
- restpki_ng_python_client/models/pades_signature_post_request_v2.py +171 -0
- restpki_ng_python_client/models/pades_signature_post_response.py +120 -0
- restpki_ng_python_client/models/pades_signature_post_signed_bytes_request.py +92 -0
- restpki_ng_python_client/models/pades_signature_post_signed_bytes_response.py +106 -0
- restpki_ng_python_client/models/pades_signer_model.py +168 -0
- restpki_ng_python_client/models/pades_size_model.py +89 -0
- restpki_ng_python_client/models/pades_text_horizontal_align.py +45 -0
- restpki_ng_python_client/models/pades_vertical_align.py +46 -0
- restpki_ng_python_client/models/pades_visual_auto_positioning_model.py +106 -0
- restpki_ng_python_client/models/pades_visual_image_model.py +105 -0
- restpki_ng_python_client/models/pades_visual_positioning_model.py +109 -0
- restpki_ng_python_client/models/pades_visual_rectangle_model.py +127 -0
- restpki_ng_python_client/models/pades_visual_representation_model.py +103 -0
- restpki_ng_python_client/models/pades_visual_text_model.py +111 -0
- restpki_ng_python_client/models/page_orientations.py +46 -0
- restpki_ng_python_client/models/paper_sizes.py +56 -0
- restpki_ng_python_client/models/pdf_add_marks_request.py +117 -0
- restpki_ng_python_client/models/pdf_add_marks_response.py +91 -0
- restpki_ng_python_client/models/pdf_container_definition.py +208 -0
- restpki_ng_python_client/models/pdf_helper.py +43 -0
- restpki_ng_python_client/models/pdf_mark_element_model.py +230 -0
- restpki_ng_python_client/models/pdf_mark_element_type.py +46 -0
- restpki_ng_python_client/models/pdf_mark_image_model.py +98 -0
- restpki_ng_python_client/models/pdf_mark_model.py +168 -0
- restpki_ng_python_client/models/pdf_mark_page_options.py +47 -0
- restpki_ng_python_client/models/pdf_signature_options.py +101 -0
- restpki_ng_python_client/models/pdf_text_section_model.py +125 -0
- restpki_ng_python_client/models/pdf_text_style.py +46 -0
- restpki_ng_python_client/models/pki_brazil_certificate_model.py +159 -0
- restpki_ng_python_client/models/pki_brazil_certificate_types.py +54 -0
- restpki_ng_python_client/models/pki_italy_certificate_model.py +103 -0
- restpki_ng_python_client/models/pki_italy_certificate_types.py +46 -0
- restpki_ng_python_client/models/prepare_authentication_request.py +100 -0
- restpki_ng_python_client/models/prepare_authentication_response.py +99 -0
- restpki_ng_python_client/models/prepare_signature_failures.py +46 -0
- restpki_ng_python_client/models/prepare_signature_request.py +133 -0
- restpki_ng_python_client/models/prepare_signature_response.py +116 -0
- restpki_ng_python_client/models/resource_content_or_reference.py +107 -0
- restpki_ng_python_client/models/role_attribute_model.py +114 -0
- restpki_ng_python_client/models/session_completion_status.py +89 -0
- restpki_ng_python_client/models/signature_algorithm_and_value_model.py +106 -0
- restpki_ng_python_client/models/signature_algorithm_identifier.py +88 -0
- restpki_ng_python_client/models/signature_algorithms.py +48 -0
- restpki_ng_python_client/models/signature_b_stamp_model.py +135 -0
- restpki_ng_python_client/models/signature_policy_identifier_model.py +105 -0
- restpki_ng_python_client/models/signature_result_model.py +105 -0
- restpki_ng_python_client/models/signature_session_document_data.py +128 -0
- restpki_ng_python_client/models/signature_session_document_summary.py +138 -0
- restpki_ng_python_client/models/signature_session_model.py +126 -0
- restpki_ng_python_client/models/signature_session_status.py +49 -0
- restpki_ng_python_client/models/signature_types.py +46 -0
- restpki_ng_python_client/models/signer_b_stamp_model.py +132 -0
- restpki_ng_python_client/models/signer_model.py +187 -0
- restpki_ng_python_client/models/signer_summary.py +94 -0
- restpki_ng_python_client/models/timestamp_issue_response.py +99 -0
- restpki_ng_python_client/models/validation_item_model.py +111 -0
- restpki_ng_python_client/models/validation_item_types.py +91 -0
- restpki_ng_python_client/models/validation_results_model.py +131 -0
- restpki_ng_python_client/models/webhook_event_model.py +94 -0
- restpki_ng_python_client/models/webhook_event_types.py +44 -0
- restpki_ng_python_client/models/xml_attribute_model.py +107 -0
- restpki_ng_python_client/models/xml_element_location_model.py +111 -0
- restpki_ng_python_client/models/xml_element_model.py +115 -0
- restpki_ng_python_client/models/xml_element_signature_post_request.py +145 -0
- restpki_ng_python_client/models/xml_id_attribute_model.py +96 -0
- restpki_ng_python_client/models/xml_id_resolution_table_model.py +123 -0
- restpki_ng_python_client/models/xml_insertion_options.py +47 -0
- restpki_ng_python_client/models/xml_node_name_model.py +96 -0
- restpki_ng_python_client/models/xml_signature_model.py +154 -0
- restpki_ng_python_client/models/xml_signature_options.py +102 -0
- restpki_ng_python_client/models/xml_signature_post_response.py +120 -0
- restpki_ng_python_client/models/xml_signature_post_signed_bytes_request.py +92 -0
- restpki_ng_python_client/models/xml_signature_post_signed_bytes_response.py +106 -0
- restpki_ng_python_client/models/xml_signature_response_model.py +113 -0
- restpki_ng_python_client/models/xml_signature_types.py +47 -0
- restpki_ng_python_client/models/xml_signed_entity_types.py +46 -0
- restpki_ng_python_client/py.typed +0 -0
- restpki_ng_python_client/rest.py +231 -0
- restpki_ng_python_client/restpki_ng_client.py +458 -0
- restpki_ng_python_client/standard_signature_policies.py +24 -0
- restpki_ng_python_client/utils.py +80 -0
- restpki_ng_python_client-0.9.0.dist-info/METADATA +16 -0
- restpki_ng_python_client-0.9.0.dist-info/RECORD +181 -0
- restpki_ng_python_client-0.9.0.dist-info/WHEEL +5 -0
- restpki_ng_python_client-0.9.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Rest PKI Core API
|
|
5
|
+
|
|
6
|
+
<b><i>Para Português, <a href=\"https://docs.lacunasoftware.com/pt-br/articles/rest-pki/core/integration/get-started\">clique aqui</a></i></b> <p> <a href=\"https://docs.lacunasoftware.com/en-us/articles/rest-pki/core/\">Rest PKI Core</a> is an upcoming version of <a href=\"https://docs.lacunasoftware.com/en-us/articles/rest-pki/\">Rest PKI</a> that will have extended compatibility with environments and databases. </p> <p> In addition to Windows Server (which is already supported by Rest PKI), Rest PKI Core will also run on <b>Linux</b> (Debian- and RedHat-based distributions) and on <b>Docker</b>. As for database servers, in addition to SQL Server, <b>PostgreSQL</b> will also be supported. </p> <p> <b>Before getting started, see the integration overview on the <a href=\"https://docs.lacunasoftware.com/en-us/articles/rest-pki/core/integration/\">Integration Guide</a></b> </p> <p> For questions regarding the usage of this API, please reach us at <a href=\"https://lacuna.help/\">lacuna.help</a> </p> <h2>Parameters</h2> <p> You will need the following parameters: </p> <ul> <li><b>Endpoint</b>: address of the Rest PKI Core instance that will be used</li> <li><b>API Key</b>: authorization key for using the API</li> </ul> <p> The <span class=\"model\">endpoint</span> must be prefixed to all relative URLs mentioned here. As for the <span class=\"model\">API Key</span>, see how to use it below. </p> <h2>Authentication</h2> <p> The API key must be sent on the <span class=\"model\">X-Api-Key</span> header on each request: </p> <!-- unfortunately, class \"example microlight\" doesn't seem to work here --> <pre style=\"font-size: 12px; padding: 10px; border-radius: 4px; background: #41444e; font-weight: 600; color: #fff;\"> X-Api-Key: yourapp|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx </pre> <h2>HTTP Codes</h2> <p> The APIs will return the following HTTP codes: </p> <table> <thead> <tr> <th>Code</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><strong class=\"model-title\">200 (OK)</strong></td> <td>Request processed successfully. The response is different for each API, please refer to the operation's documentation</td> </tr> <tr> <td><strong class=\"model-title\">400 (Bad Request)</strong></td> <td>Syntax error. For instance, when a required field was not provided</td> </tr> <tr> <td><strong class=\"model-title\">401 (Unauthorized)</strong></td> <td>API key not provided or invalid</td> </tr> <tr> <td><strong class=\"model-title\">403 (Forbidden)</strong></td> <td>API key is valid, but the application has insufficient permissions to complete the requested operation</td> </tr> <tr> <td><strong class=\"model-title\">422 (Unprocessable Entity)</strong></td> <td>API error. The response body is an <a href=\"#model-ErrorModelV2\" class=\"model\">ErrorModelV2</a> </tr> <tr> <td><strong class=\"model-title\">500 (Internal Server Error)</strong></td> <td>An unexpected error occurred. The <span class=\"model\">exceptionCode</span> contained on the response body may be of help for our support team during diagnostic.</td> </tr> </tbody> </table> <h3>Error Codes</h3> <p> Some of the error codes returned in the <span class=\"model\">code</span> field of an <a href=\"#model-ErrorModelV2\" class=\"model\">ErrorModelV2</a> (body of responses with HTTP status code 422) are provided below*: </p> <table> <thead> <tr> <th>Code</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td class=\"model\">DocumentNotFound</td> <td>A referenced document was not found (check the document ID)</td> </tr> <tr> <td class=\"model\">SecurityContextNotFound</td> <td>A referenced security context was not found (check the security context ID)</td> </tr> <tr> <td class=\"model\">SignatureSessionNotFound</td> <td>A referenced signature session was not found (check the signature session ID)</td> </tr> <tr> <td class=\"model\">BadSignatureSessionOperation</td> <td>The operation is invalid for the current signature session or document status. For instance, trying to await the session's completion if it is still <span class=\"model\">Pending</span> results in this error</td> </tr> <tr> <td class=\"model\">BackgroundProcessing</td> <td>The operation cannot be completed at this time because the resource is being processed in background</td> </tr> <tr> <td class=\"model\">SignatureSessionTokenRequired</td> <td>The signature session token was not passed on the <span class=\"model\">X-Signature-Session-Token</span> request header</td> </tr> <tr> <td class=\"model\">BadSignatureSessionToken</td> <td>An invalid signature session token was passed on the <span class=\"model\">X-Signature-Session-Token</span> request header. Check your application for possible corruption of the session token, which may contain characters <span class=\"code\">-</span> (hyphen) and <span class=\"code\">_</span> (underscore)</td> </tr> <tr> <td class=\"model\">ExpiredSignatureSessionToken</td> <td>An expired signature session token was passed on the <span class=\"model\">X-Signature-Session-Token</span> request header. Signature session tokens are normally valid for 4 hours.</td> </tr> </tbody> </table> <p style=\"font-size: 0.9em\"> *The codes shown above are the most common error codes. Nonetheless, this list is not comprehensive. New codes may be added anytime without previous warning. </p> <h2>Culture / Internationalization (i18n)</h2> <p>The <span class=\"model\">Accept-Language</span> request header is observed by this API. The following cultures are supported:</p> <ul> <li><span class=\"code\">en-US</span> (or simply <span class=\"code\">en</span>)</li> <li><span class=\"code\">pt-BR</span> (or simply <span class=\"code\">pt</span>)</li> </ul> <p><i>Notice: error messages are not affected by this header and therefore should not be displayed to users, being better suited for logging.</i></p>
|
|
7
|
+
|
|
8
|
+
The version of the OpenAPI document: 2.1.2
|
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
10
|
+
|
|
11
|
+
Do not edit the class manually.
|
|
12
|
+
""" # noqa: E501
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
import io
|
|
16
|
+
import json
|
|
17
|
+
import re
|
|
18
|
+
import ssl
|
|
19
|
+
|
|
20
|
+
import urllib3
|
|
21
|
+
|
|
22
|
+
from restpki_ng_python_client.exceptions import ApiException, ApiValueError
|
|
23
|
+
|
|
24
|
+
RESTResponseType = urllib3.HTTPResponse
|
|
25
|
+
|
|
26
|
+
class RESTResponse(io.IOBase):
|
|
27
|
+
|
|
28
|
+
def __init__(self, resp) -> None:
|
|
29
|
+
self.response = resp
|
|
30
|
+
self.status = resp.status
|
|
31
|
+
self.reason = resp.reason
|
|
32
|
+
self.data = None
|
|
33
|
+
|
|
34
|
+
def read(self):
|
|
35
|
+
if self.data is None:
|
|
36
|
+
self.data = self.response.data
|
|
37
|
+
return self.data
|
|
38
|
+
|
|
39
|
+
def getheaders(self):
|
|
40
|
+
"""Returns a dictionary of the response headers."""
|
|
41
|
+
return self.response.headers
|
|
42
|
+
|
|
43
|
+
def getheader(self, name, default=None):
|
|
44
|
+
"""Returns a given response header."""
|
|
45
|
+
return self.response.headers.get(name, default)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class RESTClientObject:
|
|
49
|
+
|
|
50
|
+
def __init__(self, configuration) -> None:
|
|
51
|
+
# urllib3.PoolManager will pass all kw parameters to connectionpool
|
|
52
|
+
# https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/poolmanager.py#L75 # noqa: E501
|
|
53
|
+
# https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/connectionpool.py#L680 # noqa: E501
|
|
54
|
+
# Custom SSL certificates and client certificates: http://urllib3.readthedocs.io/en/latest/advanced-usage.html # noqa: E501
|
|
55
|
+
|
|
56
|
+
# cert_reqs
|
|
57
|
+
if configuration.verify_ssl:
|
|
58
|
+
cert_reqs = ssl.CERT_REQUIRED
|
|
59
|
+
else:
|
|
60
|
+
cert_reqs = ssl.CERT_NONE
|
|
61
|
+
|
|
62
|
+
addition_pool_args = {}
|
|
63
|
+
if configuration.assert_hostname is not None:
|
|
64
|
+
addition_pool_args['assert_hostname'] = (
|
|
65
|
+
configuration.assert_hostname
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
if configuration.retries is not None:
|
|
69
|
+
addition_pool_args['retries'] = configuration.retries
|
|
70
|
+
|
|
71
|
+
if configuration.tls_server_name:
|
|
72
|
+
addition_pool_args['server_hostname'] = configuration.tls_server_name
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
if configuration.socket_options is not None:
|
|
76
|
+
addition_pool_args['socket_options'] = configuration.socket_options
|
|
77
|
+
|
|
78
|
+
# https pool manager
|
|
79
|
+
if configuration.proxy:
|
|
80
|
+
self.pool_manager = urllib3.ProxyManager(
|
|
81
|
+
cert_reqs=cert_reqs,
|
|
82
|
+
ca_certs=configuration.ssl_ca_cert,
|
|
83
|
+
cert_file=configuration.cert_file,
|
|
84
|
+
key_file=configuration.key_file,
|
|
85
|
+
proxy_url=configuration.proxy,
|
|
86
|
+
proxy_headers=configuration.proxy_headers,
|
|
87
|
+
**addition_pool_args
|
|
88
|
+
)
|
|
89
|
+
else:
|
|
90
|
+
self.pool_manager = urllib3.PoolManager(
|
|
91
|
+
cert_reqs=cert_reqs,
|
|
92
|
+
ca_certs=configuration.ssl_ca_cert,
|
|
93
|
+
cert_file=configuration.cert_file,
|
|
94
|
+
key_file=configuration.key_file,
|
|
95
|
+
**addition_pool_args
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
def request(
|
|
99
|
+
self,
|
|
100
|
+
method,
|
|
101
|
+
url,
|
|
102
|
+
headers=None,
|
|
103
|
+
body=None,
|
|
104
|
+
post_params=None,
|
|
105
|
+
_request_timeout=None
|
|
106
|
+
):
|
|
107
|
+
"""Perform requests.
|
|
108
|
+
|
|
109
|
+
:param method: http request method
|
|
110
|
+
:param url: http request url
|
|
111
|
+
:param headers: http request headers
|
|
112
|
+
:param body: request json body, for `application/json`
|
|
113
|
+
:param post_params: request post parameters,
|
|
114
|
+
`application/x-www-form-urlencoded`
|
|
115
|
+
and `multipart/form-data`
|
|
116
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
117
|
+
number provided, it will be total request
|
|
118
|
+
timeout. It can also be a pair (tuple) of
|
|
119
|
+
(connection, read) timeouts.
|
|
120
|
+
"""
|
|
121
|
+
method = method.upper()
|
|
122
|
+
assert method in [
|
|
123
|
+
'GET',
|
|
124
|
+
'HEAD',
|
|
125
|
+
'DELETE',
|
|
126
|
+
'POST',
|
|
127
|
+
'PUT',
|
|
128
|
+
'PATCH',
|
|
129
|
+
'OPTIONS'
|
|
130
|
+
]
|
|
131
|
+
|
|
132
|
+
if post_params and body:
|
|
133
|
+
raise ApiValueError(
|
|
134
|
+
"body parameter cannot be used with post_params parameter."
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
post_params = post_params or {}
|
|
138
|
+
headers = headers or {}
|
|
139
|
+
|
|
140
|
+
timeout = None
|
|
141
|
+
if _request_timeout:
|
|
142
|
+
if isinstance(_request_timeout, (int, float)):
|
|
143
|
+
timeout = urllib3.Timeout(total=_request_timeout)
|
|
144
|
+
elif (
|
|
145
|
+
isinstance(_request_timeout, tuple)
|
|
146
|
+
and len(_request_timeout) == 2
|
|
147
|
+
):
|
|
148
|
+
timeout = urllib3.Timeout(
|
|
149
|
+
connect=_request_timeout[0],
|
|
150
|
+
read=_request_timeout[1]
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
try:
|
|
154
|
+
# For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE`
|
|
155
|
+
if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']:
|
|
156
|
+
|
|
157
|
+
# no content type provided or payload is json
|
|
158
|
+
content_type = headers.get('Content-Type')
|
|
159
|
+
if (
|
|
160
|
+
not content_type
|
|
161
|
+
or re.search('json', content_type, re.IGNORECASE)
|
|
162
|
+
):
|
|
163
|
+
request_body = None
|
|
164
|
+
if body is not None:
|
|
165
|
+
request_body = json.dumps(body)
|
|
166
|
+
r = self.pool_manager.request(
|
|
167
|
+
method,
|
|
168
|
+
url,
|
|
169
|
+
body=request_body,
|
|
170
|
+
timeout=timeout,
|
|
171
|
+
headers=headers,
|
|
172
|
+
preload_content=False
|
|
173
|
+
)
|
|
174
|
+
elif content_type == 'application/x-www-form-urlencoded':
|
|
175
|
+
r = self.pool_manager.request(
|
|
176
|
+
method,
|
|
177
|
+
url,
|
|
178
|
+
fields=post_params,
|
|
179
|
+
encode_multipart=False,
|
|
180
|
+
timeout=timeout,
|
|
181
|
+
headers=headers,
|
|
182
|
+
preload_content=False
|
|
183
|
+
)
|
|
184
|
+
elif content_type == 'multipart/form-data':
|
|
185
|
+
# must del headers['Content-Type'], or the correct
|
|
186
|
+
# Content-Type which generated by urllib3 will be
|
|
187
|
+
# overwritten.
|
|
188
|
+
del headers['Content-Type']
|
|
189
|
+
r = self.pool_manager.request(
|
|
190
|
+
method,
|
|
191
|
+
url,
|
|
192
|
+
fields=post_params,
|
|
193
|
+
encode_multipart=True,
|
|
194
|
+
timeout=timeout,
|
|
195
|
+
headers=headers,
|
|
196
|
+
preload_content=False
|
|
197
|
+
)
|
|
198
|
+
# Pass a `string` parameter directly in the body to support
|
|
199
|
+
# other content types than Json when `body` argument is
|
|
200
|
+
# provided in serialized form
|
|
201
|
+
elif isinstance(body, str) or isinstance(body, bytes):
|
|
202
|
+
request_body = body
|
|
203
|
+
r = self.pool_manager.request(
|
|
204
|
+
method,
|
|
205
|
+
url,
|
|
206
|
+
body=request_body,
|
|
207
|
+
timeout=timeout,
|
|
208
|
+
headers=headers,
|
|
209
|
+
preload_content=False
|
|
210
|
+
)
|
|
211
|
+
else:
|
|
212
|
+
# Cannot generate the request from given parameters
|
|
213
|
+
msg = """Cannot prepare a request message for provided
|
|
214
|
+
arguments. Please check that your arguments match
|
|
215
|
+
declared content type."""
|
|
216
|
+
raise ApiException(status=0, reason=msg)
|
|
217
|
+
# For `GET`, `HEAD`
|
|
218
|
+
else:
|
|
219
|
+
r = self.pool_manager.request(
|
|
220
|
+
method,
|
|
221
|
+
url,
|
|
222
|
+
fields={},
|
|
223
|
+
timeout=timeout,
|
|
224
|
+
headers=headers,
|
|
225
|
+
preload_content=False
|
|
226
|
+
)
|
|
227
|
+
except urllib3.exceptions.SSLError as e:
|
|
228
|
+
msg = "\n".join([type(e).__name__, str(e)])
|
|
229
|
+
raise ApiException(status=0, reason=msg)
|
|
230
|
+
|
|
231
|
+
return RESTResponse(r)
|