Ver código fonte

Adding MIME options to post, and text/plain as an additional MIME category

Andrej Studen @ VBOX 3 dias atrás
pai
commit
43a608ccf6
3 arquivos alterados com 17 adições e 15 exclusões
  1. 4 10
      orthancDatabaseBrowser.py
  2. 1 1
      orthancFileBrowser.py
  3. 12 4
      orthancInterface.py

+ 4 - 10
orthancDatabaseBrowser.py

@@ -77,22 +77,16 @@ class orthancDB:
 
         url=self.net.getCoreURL()
         url+='/tools/find'
-        response=self.net.post(url,'json',jsonData)
-        encoding=chardet.detect(response.data)["encoding"]
-        return json.loads(response.data.decode(encoding))
+        response=self.net.post(url,jsonData,'json')
+        return extractJSON(response)
 
 
     def upload(self, f) :
         url=self.net.getCoreURL()
         url+='/instances'
         fobj=open (f, 'rb')
-        response=self.net.post(url,'octet-stream',fobj.read())
-        try:
-            encoding=chardet.detect(response.data)["encoding"]
-        except AttributeError:
-            print(response)
-            return json.loads('{"status":"BAD"}')
-        return json.loads(response.data.decode(encoding))
+        response=self.net.post(url,fobj.read(),'octet-stream')
+        return extractJSON(response)
 
     def remove(self,level,orthancId):
         url=self.net.getCoreURL()

+ 1 - 1
orthancFileBrowser.py

@@ -32,7 +32,7 @@ class orthancFileBrowser:
         url=self.net.getCoreURL()
         url+="/instances"
         with open(path,'rb') as f:
-            response=self.net.post(url,"octet-stream", f.read())
+            response=self.net.post(url, f.read(),"octet-stream")
         print(response.data)
 
     

+ 12 - 4
orthancInterface.py

@@ -2,6 +2,14 @@ import urllib3
 #requests doesnt work as it lacks key password checking
 import json
 
+def setContentType(headers,dataType):
+
+    if dataType=='text':
+        headers['Content-Type']="text/plain"
+        return
+
+    headers['Content-Type']="application/"+dataType
+
 
 class orthancInterface:
 
@@ -52,12 +60,12 @@ class orthancInterface:
         except urllib3.exceptions.HTTPError as e:
             print(e)
 
-    def post(self,url,dataType,data):
+    def post(self,url,data,dataType):
 
         #dataType is typically json or octet-stream
         debug=False
         headers=urllib3.util.make_headers(basic_auth=self.getBasicAuth())
-        headers['Content-Type']="application/"+dataType#for files
+        setContentType(headers,dataType)
         #add csrf;also sets self.cookie
         #headers["X-LABKEY-CSRF"]=self.getCSRF()
         #doesn't seem like orthanc is big on security
@@ -69,7 +77,7 @@ class orthancInterface:
         except urllib3.exceptions.HTTPError as e:
             print(e)
 
-    def put(self,url,data):
+    def put(self,url,data,dataType='octet-stream'):
 
         debug=False
 
@@ -77,7 +85,7 @@ class orthancInterface:
             print("PUT: {}").format(url)
 
         headers=urllib3.util.make_headers(basic_auth=self.getBasicAuth())
-        headers["Content-Type"]="application/octet-stream"
+        setContentType(headers,dataType)
         #add csrf
         #headers["X-LABKEY-CSRF"]=self.getCSRF()
         #headers["Cookie"]=self.cookie