X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osmclient%2Fsol005%2Fhttp.py;h=5311ca8d1e5b6cda544e662861c89250fd631b0f;hb=f75ef1bf8e7fe0501853ee425394c0dcd3d90068;hp=11ddca6d9891d970dd6a3d55bd464937c26cec0d;hpb=c508429478c61e528ec6f5ddd4af8a1958add122;p=osm%2Fosmclient.git diff --git a/osmclient/sol005/http.py b/osmclient/sol005/http.py index 11ddca6..5311ca8 100644 --- a/osmclient/sol005/http.py +++ b/osmclient/sol005/http.py @@ -48,24 +48,21 @@ class Http(http.Http): http_code = curl_cmd.getinfo(pycurl.HTTP_CODE) #print 'HTTP_CODE: {}'.format(http_code) curl_cmd.close() - if http_code == 204: - return None - elif http_code == 404: - if data.getvalue(): - return json.loads(data.getvalue().decode()) - else: - return "NOT FOUND" + # TODO 202 accepted should be returned somehow if data.getvalue(): - return json.loads(data.getvalue().decode()) - return "Failed" + return http_code, data.getvalue().decode() + else: + return http_code, None def send_cmd(self, endpoint='', postfields_dict=None, formfile=None, filename=None, - put_method=False): + put_method=False, patch_method=False): data = BytesIO() curl_cmd = self._get_curl_cmd(endpoint) if put_method: curl_cmd.setopt(pycurl.PUT, 1) + elif patch_method: + curl_cmd.setopt(pycurl.CUSTOMREQUEST, "PATCH") else: curl_cmd.setopt(pycurl.POST, 1) curl_cmd.setopt(pycurl.WRITEFUNCTION, data.write) @@ -87,21 +84,10 @@ class Http(http.Http): curl_cmd.perform() http_code = curl_cmd.getinfo(pycurl.HTTP_CODE) curl_cmd.close() - if http_code not in (200, 201, 202, 204): - raise ClientException(data.getvalue().decode()) - if postfields_dict is not None: - if data.getvalue(): - return json.loads(data.getvalue().decode()) - return None - elif formfile is not None: - if data.getvalue(): - return yaml.safe_load(data.getvalue().decode()) - return None - elif filename is not None: - if data.getvalue(): - return yaml.safe_load(data.getvalue().decode()) - return None - return None + if data.getvalue(): + return http_code, data.getvalue().decode() + else: + return http_code, None def post_cmd(self, endpoint='', postfields_dict=None, formfile=None, filename=None): @@ -109,7 +95,7 @@ class Http(http.Http): postfields_dict=postfields_dict, formfile=formfile, filename=filename, - put_method=False) + put_method=False, patch_method=False) def put_cmd(self, endpoint='', postfields_dict=None, formfile=None, filename=None): @@ -117,7 +103,15 @@ class Http(http.Http): postfields_dict=postfields_dict, formfile=formfile, filename=filename, - put_method=True) + put_method=True, patch_method=False) + + def patch_cmd(self, endpoint='', postfields_dict=None, + formfile=None, filename=None): + return self.send_cmd(endpoint=endpoint, + postfields_dict=postfields_dict, + formfile=formfile, + filename=filename, + put_method=False, patch_method=True) def get2_cmd(self, endpoint): data = BytesIO() @@ -125,6 +119,9 @@ class Http(http.Http): curl_cmd.setopt(pycurl.HTTPGET, 1) curl_cmd.setopt(pycurl.WRITEFUNCTION, data.write) curl_cmd.perform() + http_code = curl_cmd.getinfo(pycurl.HTTP_CODE) curl_cmd.close() - return data.getvalue() + if data.getvalue(): + return http_code, data.getvalue().decode() + return http_code, None