浏览代码

Adding head call to slicerNetwork

Andrej Studen @ VBOX 4 年之前
父节点
当前提交
cfcc028116
共有 2 个文件被更改,包括 33 次插入5 次删除
  1. 2 2
      labkeyBrowser/labkeyBrowser.py
  2. 31 3
      labkeyBrowser/slicerNetwork.py

+ 2 - 2
labkeyBrowser/labkeyBrowser.py

@@ -51,7 +51,7 @@ class labkeyBrowserWidget(ScriptedLoadableModuleWidget):
 
     connectionFormLayout = qt.QFormLayout(connectionCollapsibleButton)
 
-    self.configDir=os.path.join(getHomeDir(),".labkey")
+    self.configDir=os.path.join(os.path.expanduser('~'),".labkey")
 
     self.serverURL=qt.QLineEdit("https://merlin.fmf.uni-lj.si")
     self.serverURL.textChanged.connect(self.updateServerURL)
@@ -59,7 +59,7 @@ class labkeyBrowserWidget(ScriptedLoadableModuleWidget):
     #copy initial setting
     self.updateServerURL(self.serverURL.text);
 
-    self.startDir=os.path.join(getHomeDir(),"temp/crt")
+    self.startDir=os.path.join(os.path.expanduser('~'),"temp/crt")
 
     self.userCertButton=qt.QPushButton("Load")
     self.userCertButton.toolTip="Load user certificate (crt)"

+ 31 - 3
labkeyBrowser/slicerNetwork.py

@@ -213,6 +213,25 @@ class labkeyURIHandler(slicer.vtkURIHandler):
             print e.code
             print e.read()
             return e
+    
+    #a HEAD request
+    def head(self,url):
+    
+        debug=False
+        if debug:
+            print("HEAD: {0}").format(url)
+            print("as {0}").format(self.auth_name)
+        r=MethodRequest(url.encode('utf-8'),method="HEAD")
+        base64string = base64.b64encode('%s:%s' % (self.auth_name, self.auth_pass))
+        r.add_header("Authorization", "Basic %s" % base64string)
+        try:
+            return self.opener.open(r)
+        #f contains json as a return value
+        except urllib2.HTTPError as e:
+            print e.code
+            print e.read()
+            return e
+
 
     def post(self,url,data):
 
@@ -310,17 +329,26 @@ class labkeyURIHandler(slicer.vtkURIHandler):
         return ('VolumeFile','SegmentationFile','TransformFile')
 
     #mimic slicer.util.loadNodeFromFile
-    def loadNode(self, relativeName, filetype, properties={},returnNode=False):
+    def loadNode(self, relativeName, filetype, properties={},returnNode=False, keepCached=True):
          #this is the only relevant part - file must be downloaded to cache
          #labkeyName is just the relative part (from labkey onwards)
+         
          localPath=self.DownloadFileToCache(relativeName)
-         print localPath
+         
          if not returnNode:
              slicer.util.loadNodeFromFile(localPath,filetype,properties,returnNode=False)
+             if not keepCached:
+                 os.remove(localPath)
              return
+         
          ok,node=slicer.util.loadNodeFromFile(localPath,filetype,properties,returnNode=True)
          if ok:
-            return node
+             if not keepCached:
+                 os.remove(localPath)
+             return node
+         
+
+         os.remove(localPath)
          return None
     #     #remove retrieved file