From ebfe265cacee3b0aa550d300343cc766a2596727 Mon Sep 17 00:00:00 2001 From: Dariusz Suchojad Date: Thu, 9 Nov 2023 18:20:13 +0100 Subject: [PATCH 1/3] GH #755 - Made response.payload default to response.text. --- .../src/zato/server/connection/http_soap/outgoing.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/zato-server/src/zato/server/connection/http_soap/outgoing.py b/code/zato-server/src/zato/server/connection/http_soap/outgoing.py index 5462d4ba7e..8befc81463 100644 --- a/code/zato-server/src/zato/server/connection/http_soap/outgoing.py +++ b/code/zato-server/src/zato/server/connection/http_soap/outgoing.py @@ -579,8 +579,9 @@ def http_request( # .. do invoke the connection .. response = self.invoke_http(cid, method, address, data, headers, {}, params=qs_params, *args, **kwargs) - # .. by default, we have no response at all .. - response.data = None # type: ignore + # .. by default, we have no parsed response at all, .. + # .. which means that we can assume it will be the same as the raw, text response .. + response.data = response.text # type: ignore # .. check if we are explicitly told that we handle JSON .. _has_data_format_json = self.config['data_format'] == DATA_FORMAT.JSON From 0baa7979731162cf9147b89f8cc6304ca58b7475 Mon Sep 17 00:00:00 2001 From: Dariusz Suchojad Date: Thu, 9 Nov 2023 18:21:04 +0100 Subject: [PATCH 2/3] GH #755 - Made .spawn an alias to run_in_thread. --- code/zato-server/src/zato/server/service/__init__.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/code/zato-server/src/zato/server/service/__init__.py b/code/zato-server/src/zato/server/service/__init__.py index 8b4ece607f..e595132f89 100644 --- a/code/zato-server/src/zato/server/service/__init__.py +++ b/code/zato-server/src/zato/server/service/__init__.py @@ -22,7 +22,7 @@ from lxml.objectify import ObjectifiedElement # gevent -from gevent import Timeout, spawn +from gevent import Timeout, spawn as _gevent_spawn from gevent.lock import RLock # Python 2/3 compatibility @@ -996,7 +996,7 @@ def invoke_by_impl_name( if timeout: g = None try: - g = spawn(self.update_handle, *invoke_args, **kwargs) + g = _gevent_spawn(self.update_handle, *invoke_args, **kwargs) return g.get(block=True, timeout=timeout) except Timeout: if g: @@ -1178,8 +1178,10 @@ def accept(self, _zato_no_op_marker:'any_'=zato_no_op_marker) -> 'bool': # ################################################################################################################################ - def spawn(self, *args:'any_', **kwargs:'any_') -> 'any_': - return spawn(*args, **kwargs) + def run_in_thread(self, *args:'any_', **kwargs:'any_') -> 'any_': + return _gevent_spawn(*args, **kwargs) + + spawn = run_in_thread # ################################################################################################################################ From 3188aa3d7f2fe3fe3d7e21a8b3f5fc271c97a500 Mon Sep 17 00:00:00 2001 From: Dariusz Suchojad Date: Thu, 9 Nov 2023 18:21:23 +0100 Subject: [PATCH 3/3] GH #755 - Made request.raw_request an alias to request.text. --- .../zato/server/service/reqresp/__init__.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/code/zato-server/src/zato/server/service/reqresp/__init__.py b/code/zato-server/src/zato/server/service/reqresp/__init__.py index 7c984218bc..6076ba7e9b 100644 --- a/code/zato-server/src/zato/server/service/reqresp/__init__.py +++ b/code/zato-server/src/zato/server/service/reqresp/__init__.py @@ -182,9 +182,9 @@ def __init__(self, connection, data): class Request: """ Wraps a service request and adds some useful meta-data. """ - raw_request: 'any_' + text: 'any_' - __slots__ = ('service', 'logger', 'payload', 'raw_request', 'input', 'cid', 'data_format', 'transport', + __slots__ = ('service', 'logger', 'payload', 'text', 'input', 'cid', 'data_format', 'transport', 'encrypt_func', 'encrypt_secrets', 'bytes_to_str_encoding', '_wsgi_environ', 'channel_params', 'merge_channel_params', 'http', 'amqp', 'wmq', 'ibm_mq', 'hl7', 'enforce_string_encoding') @@ -198,7 +198,7 @@ def __init__( self.service = service self.logger = cast_('Logger', service.logger) self.payload = '' - self.raw_request = '' + self.text = '' self.input = None # type: any_ self.cid = cast_('str', None) self.data_format = cast_('str', data_format) @@ -249,6 +249,18 @@ def init( if self.merge_channel_params: self.input.update(self.channel_params) +# ################################################################################################################################ + + @property + def raw_request(self) -> 'any_': + return self.text + +# ################################################################################################################################ + + @raw_request.setter + def raw_request(self, value:'any_') -> 'any_': + self.text = value + # ################################################################################################################################ def deepcopy(self):