def update_params_for_auth(self, headers, querys, auth_settings): """Updates header and query params based on authentication setting. :param headers: Header parameters dict to be updated. :param querys: Query parameters tuple list to be updated. :param auth_settings: Authentication setting identifiers list. """ if not auth_settings: return for auth in auth_settings: auth_setting = self.configuration.auth_settings().get(auth) if auth_setting: if auth_setting['in'] == 'cookie': headers['Cookie'] = auth_setting['value'] elif auth_setting['in'] == 'header': headers[auth_setting['key']] = auth_setting['value'] elif auth_setting['in'] == 'query': querys.append((auth_setting['key'], auth_setting['value'])) else: raise ApiValueError( 'Authentication token must be in `query` or `header`')
def request(self, method, url, query_params=None, headers=None, post_params=None, body=None, _preload_content=True, _request_timeout=None): """Makes the HTTP request using RESTClient.""" if method == "GET": return self.rest_client.GET(url, query_params=query_params, _preload_content=_preload_content, _request_timeout=_request_timeout, headers=headers) elif method == "HEAD": return self.rest_client.HEAD(url, query_params=query_params, _preload_content=_preload_content, _request_timeout=_request_timeout, headers=headers) elif method == "OPTIONS": return self.rest_client.OPTIONS(url, query_params=query_params, headers=headers, _preload_content=_preload_content, _request_timeout=_request_timeout) elif method == "POST": return self.rest_client.POST(url, query_params=query_params, headers=headers, post_params=post_params, _preload_content=_preload_content, _request_timeout=_request_timeout, body=body) elif method == "PUT": return self.rest_client.PUT(url, query_params=query_params, headers=headers, post_params=post_params, _preload_content=_preload_content, _request_timeout=_request_timeout, body=body) elif method == "PATCH": return self.rest_client.PATCH(url, query_params=query_params, headers=headers, post_params=post_params, _preload_content=_preload_content, _request_timeout=_request_timeout, body=body) elif method == "DELETE": return self.rest_client.DELETE(url, query_params=query_params, headers=headers, _preload_content=_preload_content, _request_timeout=_request_timeout, body=body) else: raise ApiValueError("http method must be `GET`, `HEAD`, `OPTIONS`," " `POST`, `PATCH`, `PUT` or `DELETE`.")
def import_table_with_http_info(self, project_id, table_import_request, **kwargs): # noqa: E501 """Import a new table for reference within a Simulation spec. # noqa: E501 Table import requires the following steps: 1. Request a temporary storage location via `POST /storage`. 2. Upload your table definition using the HTTP `PUT` method to the `url` provided in the temporary storage location response object. 3. Import via `POST /projects/{projectId}/tableimports` and include the `storageId` provided in the temporary storage location response object. # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.import_table_with_http_info(project_id, table_import_request, async_req=True) >>> result = thread.get() :param async_req bool: execute request asynchronously :param str project_id: The project ID (required) :param TableImportRequest table_import_request: Table import specification. (required) :param _return_http_data_only: response data without head status code and headers :param _preload_content: if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. :param _request_timeout: timeout setting for this request. If one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. :return: tuple(TableImportResponse, status_code(int), headers(HTTPHeaderDict)) If the method is called asynchronously, returns the request thread. """ local_var_params = locals() all_params = ['project_id', 'table_import_request'] all_params.extend([ 'async_req', '_return_http_data_only', '_preload_content', '_request_timeout' ]) for key, val in six.iteritems(local_var_params['kwargs']): if key not in all_params: raise ApiTypeError("Got an unexpected keyword argument '%s'" " to method import_table" % key) local_var_params[key] = val del local_var_params['kwargs'] # verify the required parameter 'project_id' is set if self.api_client.client_side_validation and ( 'project_id' not in local_var_params or # noqa: E501 local_var_params['project_id'] is None): # noqa: E501 raise ApiValueError( "Missing the required parameter `project_id` when calling `import_table`" ) # noqa: E501 # verify the required parameter 'table_import_request' is set if self.api_client.client_side_validation and ( 'table_import_request' not in local_var_params or # noqa: E501 local_var_params['table_import_request'] is None ): # noqa: E501 raise ApiValueError( "Missing the required parameter `table_import_request` when calling `import_table`" ) # noqa: E501 collection_formats = {} path_params = {} if 'project_id' in local_var_params: path_params['projectId'] = local_var_params[ 'project_id'] # noqa: E501 query_params = [] header_params = {} form_params = [] local_var_files = {} body_params = None if 'table_import_request' in local_var_params: body_params = local_var_params['table_import_request'] # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept( ['application/json']) # noqa: E501 # HTTP header `Content-Type` header_params[ 'Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 ['application/json']) # noqa: E501 # Authentication setting auth_settings = ['apiKey'] # noqa: E501 return self.api_client.call_api( '/projects/{projectId}/tableimports', 'POST', path_params, query_params, header_params, body=body_params, post_params=form_params, files=local_var_files, response_type='TableImportResponse', # noqa: E501 auth_settings=auth_settings, async_req=local_var_params.get('async_req'), _return_http_data_only=local_var_params.get( '_return_http_data_only'), # noqa: E501 _preload_content=local_var_params.get('_preload_content', True), _request_timeout=local_var_params.get('_request_timeout'), collection_formats=collection_formats)
def get_geometries_with_http_info(self, project_id, **kwargs): # noqa: E501 """List geometries within a project # noqa: E501 Only valid geometries that can be used for a simulation setup are included. # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.get_geometries_with_http_info(project_id, async_req=True) >>> result = thread.get() :param async_req bool: execute request asynchronously :param str project_id: The project ID (required) :param int limit: The number of items to return. :param int page: The page number. Use in combination with limit. :param _return_http_data_only: response data without head status code and headers :param _preload_content: if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. :param _request_timeout: timeout setting for this request. If one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. :return: tuple(Geometries, status_code(int), headers(HTTPHeaderDict)) If the method is called asynchronously, returns the request thread. """ local_var_params = locals() all_params = ['project_id', 'limit', 'page'] all_params.extend([ 'async_req', '_return_http_data_only', '_preload_content', '_request_timeout' ]) for key, val in six.iteritems(local_var_params['kwargs']): if key not in all_params: raise ApiTypeError("Got an unexpected keyword argument '%s'" " to method get_geometries" % key) local_var_params[key] = val del local_var_params['kwargs'] # verify the required parameter 'project_id' is set if self.api_client.client_side_validation and ( 'project_id' not in local_var_params or # noqa: E501 local_var_params['project_id'] is None): # noqa: E501 raise ApiValueError( "Missing the required parameter `project_id` when calling `get_geometries`" ) # noqa: E501 if self.api_client.client_side_validation and 'limit' in local_var_params and local_var_params[ 'limit'] > 1000: # noqa: E501 raise ApiValueError( "Invalid value for parameter `limit` when calling `get_geometries`, must be a value less than or equal to `1000`" ) # noqa: E501 if self.api_client.client_side_validation and 'limit' in local_var_params and local_var_params[ 'limit'] < 10: # noqa: E501 raise ApiValueError( "Invalid value for parameter `limit` when calling `get_geometries`, must be a value greater than or equal to `10`" ) # noqa: E501 if self.api_client.client_side_validation and 'page' in local_var_params and local_var_params[ 'page'] > 1000: # noqa: E501 raise ApiValueError( "Invalid value for parameter `page` when calling `get_geometries`, must be a value less than or equal to `1000`" ) # noqa: E501 if self.api_client.client_side_validation and 'page' in local_var_params and local_var_params[ 'page'] < 1: # noqa: E501 raise ApiValueError( "Invalid value for parameter `page` when calling `get_geometries`, must be a value greater than or equal to `1`" ) # noqa: E501 collection_formats = {} path_params = {} if 'project_id' in local_var_params: path_params['projectId'] = local_var_params[ 'project_id'] # noqa: E501 query_params = [] if 'limit' in local_var_params and local_var_params[ 'limit'] is not None: # noqa: E501 query_params.append( ('limit', local_var_params['limit'])) # noqa: E501 if 'page' in local_var_params and local_var_params[ 'page'] is not None: # noqa: E501 query_params.append( ('page', local_var_params['page'])) # noqa: E501 header_params = {} form_params = [] local_var_files = {} body_params = None # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept( ['application/json']) # noqa: E501 # Authentication setting auth_settings = ['apiKey'] # noqa: E501 return self.api_client.call_api( '/projects/{projectId}/geometries', 'GET', path_params, query_params, header_params, body=body_params, post_params=form_params, files=local_var_files, response_type='Geometries', # noqa: E501 auth_settings=auth_settings, async_req=local_var_params.get('async_req'), _return_http_data_only=local_var_params.get( '_return_http_data_only'), # noqa: E501 _preload_content=local_var_params.get('_preload_content', True), _request_timeout=local_var_params.get('_request_timeout'), collection_formats=collection_formats)
def update_geometry_with_http_info(self, project_id, geometry_id, geometry, **kwargs): # noqa: E501 """Update geometry information # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.update_geometry_with_http_info(project_id, geometry_id, geometry, async_req=True) >>> result = thread.get() :param async_req bool: execute request asynchronously :param str project_id: The project ID (required) :param str geometry_id: The geometry ID (required) :param Geometry geometry: Geometry information to be updated (required) :param _return_http_data_only: response data without head status code and headers :param _preload_content: if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. :param _request_timeout: timeout setting for this request. If one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. :return: None If the method is called asynchronously, returns the request thread. """ local_var_params = locals() all_params = ['project_id', 'geometry_id', 'geometry'] all_params.extend([ 'async_req', '_return_http_data_only', '_preload_content', '_request_timeout' ]) for key, val in six.iteritems(local_var_params['kwargs']): if key not in all_params: raise ApiTypeError("Got an unexpected keyword argument '%s'" " to method update_geometry" % key) local_var_params[key] = val del local_var_params['kwargs'] # verify the required parameter 'project_id' is set if self.api_client.client_side_validation and ( 'project_id' not in local_var_params or # noqa: E501 local_var_params['project_id'] is None): # noqa: E501 raise ApiValueError( "Missing the required parameter `project_id` when calling `update_geometry`" ) # noqa: E501 # verify the required parameter 'geometry_id' is set if self.api_client.client_side_validation and ( 'geometry_id' not in local_var_params or # noqa: E501 local_var_params['geometry_id'] is None): # noqa: E501 raise ApiValueError( "Missing the required parameter `geometry_id` when calling `update_geometry`" ) # noqa: E501 # verify the required parameter 'geometry' is set if self.api_client.client_side_validation and ( 'geometry' not in local_var_params or # noqa: E501 local_var_params['geometry'] is None): # noqa: E501 raise ApiValueError( "Missing the required parameter `geometry` when calling `update_geometry`" ) # noqa: E501 collection_formats = {} path_params = {} if 'project_id' in local_var_params: path_params['projectId'] = local_var_params[ 'project_id'] # noqa: E501 if 'geometry_id' in local_var_params: path_params['geometryId'] = local_var_params[ 'geometry_id'] # noqa: E501 query_params = [] header_params = {} form_params = [] local_var_files = {} body_params = None if 'geometry' in local_var_params: body_params = local_var_params['geometry'] # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept( ['application/json']) # noqa: E501 # HTTP header `Content-Type` header_params[ 'Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 ['application/json']) # noqa: E501 # Authentication setting auth_settings = ['apiKey'] # noqa: E501 return self.api_client.call_api( '/projects/{projectId}/geometries/{geometryId}', 'PUT', path_params, query_params, header_params, body=body_params, post_params=form_params, files=local_var_files, response_type=None, # noqa: E501 auth_settings=auth_settings, async_req=local_var_params.get('async_req'), _return_http_data_only=local_var_params.get( '_return_http_data_only'), # noqa: E501 _preload_content=local_var_params.get('_preload_content', True), _request_timeout=local_var_params.get('_request_timeout'), collection_formats=collection_formats)
def get_geometry_mappings_with_http_info(self, project_id, geometry_id, **kwargs): # noqa: E501 """Describe id mapping of the geometry # noqa: E501 Assignment of topological entities (faces, bodies) in the simulation setup is a non-trivial task. Complex models can consist of several assemblies which may contain multiple occurrences of bodies and their entities. In order to describe an assignment unambiguously the full path from the root part of the model to the actual topological entity is required. SimScale generates unique internal names for all topological entities of a model during the geometry import which are used for assignments within the simulation spec. Examples of internal names are `B1_TE5` or `A1_I26_A5_I27_B102_TE196`. This API endpoint allows to retrieve a mapping between the internal names and a detailed description of the entities which includes: * The topological entity class (body or face) * The original body and entity names * The path from the root of the model Please note that during geometry import the model's topology can be modified (e.g. facet split and other import options) which means that there is no 1:1 mapping between the internal and original names. # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.get_geometry_mappings_with_http_info(project_id, geometry_id, async_req=True) >>> result = thread.get() :param async_req bool: execute request asynchronously :param str project_id: The project ID (required) :param str geometry_id: The geometry ID (required) :param int limit: The number of items to return. :param int page: The page number. Use in combination with limit. :param str _class: The entity class to filter. :param list[str] bodies: The body names to filter. If multiple body names are provided any match. :param list[str] entities: The entity names to filter. If multiple entity names are provided any match. :param _return_http_data_only: response data without head status code and headers :param _preload_content: if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. :param _request_timeout: timeout setting for this request. If one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. :return: tuple(GeometryMappings, status_code(int), headers(HTTPHeaderDict)) If the method is called asynchronously, returns the request thread. """ local_var_params = locals() all_params = [ 'project_id', 'geometry_id', 'limit', 'page', '_class', 'bodies', 'entities' ] all_params.extend([ 'async_req', '_return_http_data_only', '_preload_content', '_request_timeout' ]) for key, val in six.iteritems(local_var_params['kwargs']): if key not in all_params: raise ApiTypeError("Got an unexpected keyword argument '%s'" " to method get_geometry_mappings" % key) local_var_params[key] = val del local_var_params['kwargs'] # verify the required parameter 'project_id' is set if self.api_client.client_side_validation and ( 'project_id' not in local_var_params or # noqa: E501 local_var_params['project_id'] is None): # noqa: E501 raise ApiValueError( "Missing the required parameter `project_id` when calling `get_geometry_mappings`" ) # noqa: E501 # verify the required parameter 'geometry_id' is set if self.api_client.client_side_validation and ( 'geometry_id' not in local_var_params or # noqa: E501 local_var_params['geometry_id'] is None): # noqa: E501 raise ApiValueError( "Missing the required parameter `geometry_id` when calling `get_geometry_mappings`" ) # noqa: E501 if self.api_client.client_side_validation and 'limit' in local_var_params and local_var_params[ 'limit'] > 1000: # noqa: E501 raise ApiValueError( "Invalid value for parameter `limit` when calling `get_geometry_mappings`, must be a value less than or equal to `1000`" ) # noqa: E501 if self.api_client.client_side_validation and 'limit' in local_var_params and local_var_params[ 'limit'] < 10: # noqa: E501 raise ApiValueError( "Invalid value for parameter `limit` when calling `get_geometry_mappings`, must be a value greater than or equal to `10`" ) # noqa: E501 if self.api_client.client_side_validation and 'page' in local_var_params and local_var_params[ 'page'] > 1000: # noqa: E501 raise ApiValueError( "Invalid value for parameter `page` when calling `get_geometry_mappings`, must be a value less than or equal to `1000`" ) # noqa: E501 if self.api_client.client_side_validation and 'page' in local_var_params and local_var_params[ 'page'] < 1: # noqa: E501 raise ApiValueError( "Invalid value for parameter `page` when calling `get_geometry_mappings`, must be a value greater than or equal to `1`" ) # noqa: E501 collection_formats = {} path_params = {} if 'project_id' in local_var_params: path_params['projectId'] = local_var_params[ 'project_id'] # noqa: E501 if 'geometry_id' in local_var_params: path_params['geometryId'] = local_var_params[ 'geometry_id'] # noqa: E501 query_params = [] if 'limit' in local_var_params and local_var_params[ 'limit'] is not None: # noqa: E501 query_params.append( ('limit', local_var_params['limit'])) # noqa: E501 if 'page' in local_var_params and local_var_params[ 'page'] is not None: # noqa: E501 query_params.append( ('page', local_var_params['page'])) # noqa: E501 if '_class' in local_var_params and local_var_params[ '_class'] is not None: # noqa: E501 query_params.append( ('class', local_var_params['_class'])) # noqa: E501 if 'bodies' in local_var_params and local_var_params[ 'bodies'] is not None: # noqa: E501 query_params.append( ('bodies', local_var_params['bodies'])) # noqa: E501 collection_formats['bodies'] = 'multi' # noqa: E501 if 'entities' in local_var_params and local_var_params[ 'entities'] is not None: # noqa: E501 query_params.append( ('entities', local_var_params['entities'])) # noqa: E501 collection_formats['entities'] = 'multi' # noqa: E501 header_params = {} form_params = [] local_var_files = {} body_params = None # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept( ['application/json']) # noqa: E501 # Authentication setting auth_settings = ['apiKey'] # noqa: E501 return self.api_client.call_api( '/projects/{projectId}/geometries/{geometryId}/mappings', 'GET', path_params, query_params, header_params, body=body_params, post_params=form_params, files=local_var_files, response_type='GeometryMappings', # noqa: E501 auth_settings=auth_settings, async_req=local_var_params.get('async_req'), _return_http_data_only=local_var_params.get( '_return_http_data_only'), # noqa: E501 _preload_content=local_var_params.get('_preload_content', True), _request_timeout=local_var_params.get('_request_timeout'), collection_formats=collection_formats)
def request(self, method, url, query_params=None, headers=None, body=None, post_params=None, _preload_content=True, _request_timeout=None): """Perform requests. :param method: http request method :param url: http request url :param query_params: query parameters in the url :param headers: http request headers :param body: request json body, for `application/json` :param post_params: request post parameters, `application/x-www-form-urlencoded` and `multipart/form-data` :param _preload_content: if False, the urllib3.HTTPResponse object will be returned without reading/decoding response data. Default is True. :param _request_timeout: timeout setting for this request. If one number provided, it will be total request timeout. It can also be a pair (tuple) of (connection, read) timeouts. """ method = method.upper() assert method in [ 'GET', 'HEAD', 'DELETE', 'POST', 'PUT', 'PATCH', 'OPTIONS' ] if post_params and body: raise ApiValueError( "body parameter cannot be used with post_params parameter.") post_params = post_params or {} headers = headers or {} timeout = None if _request_timeout: if isinstance(_request_timeout, (int, ) if six.PY3 else (int, long)): # noqa: E501,F821 timeout = urllib3.Timeout(total=_request_timeout) elif (isinstance(_request_timeout, tuple) and len(_request_timeout) == 2): timeout = urllib3.Timeout(connect=_request_timeout[0], read=_request_timeout[1]) if 'Content-Type' not in headers: headers['Content-Type'] = 'application/json' try: # For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE` if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']: if query_params: url += '?' + urlencode(query_params) if re.search('json', headers['Content-Type'], re.IGNORECASE): request_body = None if body is not None: request_body = json.dumps(body) r = self.pool_manager.request( method, url, body=request_body, preload_content=_preload_content, timeout=timeout, headers=headers) elif headers[ 'Content-Type'] == 'application/x-www-form-urlencoded': # noqa: E501 r = self.pool_manager.request( method, url, fields=post_params, encode_multipart=False, preload_content=_preload_content, timeout=timeout, headers=headers) elif headers['Content-Type'] == 'multipart/form-data': # must del headers['Content-Type'], or the correct # Content-Type which generated by urllib3 will be # overwritten. del headers['Content-Type'] r = self.pool_manager.request( method, url, fields=post_params, encode_multipart=True, preload_content=_preload_content, timeout=timeout, headers=headers) # Pass a `string` parameter directly in the body to support # other content types than Json when `body` argument is # provided in serialized form elif isinstance(body, str) or isinstance(body, bytes): request_body = body r = self.pool_manager.request( method, url, body=request_body, preload_content=_preload_content, timeout=timeout, headers=headers) else: # Cannot generate the request from given parameters msg = """Cannot prepare a request message for provided arguments. Please check that your arguments match declared content type.""" raise ApiException(status=0, reason=msg) # For `GET`, `HEAD` else: r = self.pool_manager.request(method, url, fields=query_params, preload_content=_preload_content, timeout=timeout, headers=headers) except urllib3.exceptions.SSLError as e: msg = "{0}\n{1}".format(type(e).__name__, str(e)) raise ApiException(status=0, reason=msg) if _preload_content: r = RESTResponse(r) # log response body logger.debug("response body: %s", r.data) if not 200 <= r.status <= 299: raise ApiException(http_resp=r) return r