neels has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/pysim/+/42155?usp=email )


Change subject: esim/http_json_api.py: support text/plain response Content-Type
......................................................................

esim/http_json_api.py: support text/plain response Content-Type

Allow returning text/plain Content-Types as 'data' output argument.

So far, all the esim/http_json_api functions require a JSON response.
However, a specific vendor has a list function where the request is JSON
but the response is text/plain CSV data. Allow and return in a dict.

Change-Id: Iba6e4cef1048b376050a435a900c0f395655a790
---
M pySim/esim/http_json_api.py
1 file changed, 7 insertions(+), 3 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/55/42155/1

diff --git a/pySim/esim/http_json_api.py b/pySim/esim/http_json_api.py
index cd95e0d..c268ce6 100644
--- a/pySim/esim/http_json_api.py
+++ b/pySim/esim/http_json_api.py
@@ -383,14 +383,18 @@
         # SGP.22, section 6.5.1)
         if response.status_code != self.api_func.expected_http_status:
             raise HttpStatusError(response)
-        if response.content and not 
response.headers.get('Content-Type').startswith(req_headers['Content-Type']):
-            raise HttpHeaderError(response)
         if not response.headers.get('X-Admin-Protocol', 
'gsma/rsp/v2.unknown').startswith('gsma/rsp/v2.'):
             raise HttpHeaderError(response)

         # Decode response and return the result back to the caller
         if response.content:
-            output = self.api_func.decode_client(response.json())
+            if 
response.headers.get('Content-Type').startswith('application/json'):
+                output = self.api_func.decode_client(response.json())
+            elif 
response.headers.get('Content-Type').startswith('text/plain;charset=UTF-8'):
+                output = { 'data': response.content.decode('utf-8') }
+            else:
+                raise HttpHeaderError(f'unimplemented response Content-Type: 
{response.headers=!r}')
+
             # In case the response contains a header, check it to make sure 
that the API call was executed successfully
             # (the presence of the header field is checked by the 
decode_client method)
             if 'header' in output:

--
To view, visit https://gerrit.osmocom.org/c/pysim/+/42155?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: Iba6e4cef1048b376050a435a900c0f395655a790
Gerrit-Change-Number: 42155
Gerrit-PatchSet: 1
Gerrit-Owner: neels <[email protected]>

Reply via email to