|
@@ -0,0 +1,101 @@
|
|
|
+import urllib3
|
|
|
+
|
|
|
+import json
|
|
|
+
|
|
|
+
|
|
|
+class labkeyInterface:
|
|
|
+
|
|
|
+ def init(self,fname):
|
|
|
+
|
|
|
+ try:
|
|
|
+ f=open(fname)
|
|
|
+ except OSError as e:
|
|
|
+ print("Confgiuration error: OS error({0}): {1}").format(e.errno, e.strerror)
|
|
|
+ raise
|
|
|
+
|
|
|
+ self.connectionConfig=json.load(f)
|
|
|
+
|
|
|
+ self.http=urllib3.PoolManager()
|
|
|
+
|
|
|
+ if 'SSL' in self.connectionConfig:
|
|
|
+ self.http = urllib3.PoolManager(\
|
|
|
+ cert_file=self.connectionConfig['SSL']['user'],\
|
|
|
+ cert_reqs='CERT_REQUIRED',\
|
|
|
+ key_file=self.connectionConfig['SSL']['key'],\
|
|
|
+ ca_certs=self.connectionConfig['SSL']['ca'])
|
|
|
+
|
|
|
+
|
|
|
+ def GetLabkeyUrl(self):
|
|
|
+ return self.connectionConfig['host']+"/labkey"
|
|
|
+
|
|
|
+ def GetLabkeyWebdavUrl(self):
|
|
|
+ return self.GetLabkeyUrl()+"/_webdav"
|
|
|
+
|
|
|
+ def getBasicAuth(self):
|
|
|
+ user=self.connectionConfig['labkey']['user']
|
|
|
+ pwd=self.connectionConfig['labkey']['password']
|
|
|
+ return user+":"+pwd
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ def get(self,url):
|
|
|
+
|
|
|
+ debug=False
|
|
|
+ if debug:
|
|
|
+ print("GET: {0}").format(url)
|
|
|
+ print("as {0}").format(user)
|
|
|
+ headers=urllib3.util.make_headers(basic_auth=self.getBasicAuth())
|
|
|
+ try:
|
|
|
+ return self.http.request('GET',url,headers=headers)
|
|
|
+
|
|
|
+ except urllib3.exceptions.HTTPError as e:
|
|
|
+ print(e)
|
|
|
+
|
|
|
+ def post(self,url,data):
|
|
|
+
|
|
|
+ debug=False
|
|
|
+ headers=urllib3.util.make_headers(basic_auth=self.getBasicAuth())
|
|
|
+ headers["Content-Type"]="application/json"
|
|
|
+
|
|
|
+ headers["X-LABKEY-CSRF"]=self.getCSRF()
|
|
|
+ headers["Cookie"]=self.cookie
|
|
|
+
|
|
|
+ try:
|
|
|
+ return self.http.request('POST',url,headers=headers,body=data)
|
|
|
+
|
|
|
+ except urllib3.exceptions.HTTPError as e:
|
|
|
+ print(e)
|
|
|
+
|
|
|
+ def put(self,url,data):
|
|
|
+
|
|
|
+ debug=False
|
|
|
+
|
|
|
+ if debug:
|
|
|
+ print("PUT: {}").format(url)
|
|
|
+
|
|
|
+ headers=urllib3.util.make_headers(basic_auth=self.getBasicAuth())
|
|
|
+ headers["Content-Type"]="application/octet-stream"
|
|
|
+
|
|
|
+ headers["X-LABKEY-CSRF"]=self.getCSRF()
|
|
|
+ headers["Cookie"]=self.cookie
|
|
|
+
|
|
|
+ try:
|
|
|
+ return self.http.request('PUT',url,headers=headers,body=data)
|
|
|
+
|
|
|
+ except urllib3.exceptions.HTTPError as e:
|
|
|
+ print(e)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ def getCSRF(self):
|
|
|
+ url=self.GetLabkeyUrl()+'/login/whoAmI.view'
|
|
|
+ response=self.get(url)
|
|
|
+ self.cookie=response.getheader('Set-Cookie')
|
|
|
+ jsonData=json.loads(response.data)
|
|
|
+ return jsonData["CSRF"]
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|