Пример #1
0
 def _getFinalFilePath(self, filePath):
     if not self._overwrite:
         newPath = getUniquePath(filePath)
         if filePath == self._targetPath:
             # update target path
             self._targetPath = newPath
         filePath = newPath
     return filePath
Пример #2
0
    def _checkAndClone(self, url):
        if not self._gitHandler.isGitURL(url):
            raise ValueError(u"The given URL does not exist or is no Git repository.")

        targetDir = get_settings().get_config(self._gitHandler.extractRepositoryNameFromURL(url))
        targetDir = getUniquePath(targetDir)
        self._gitHandler.clone(url, targetDir)
        return targetDir
 def _processSendRequestSlot(self, peerID, peerIP, value, transferDict):
     if transferDict is None:
         try:
             transferDict = json.loads(value)
             
             if not type(transferDict) is dict:
                 self.logger.warning("transferDict is no dict.")
                 return
         except:
             self.logger.exception("Could not parse transfer dict.")
             return
     
     if not u"id" in transferDict:
         self.logger.warning("No transfer ID in transfer dict. Cannot accept request")
         return
     
     if not u"name" in transferDict:
         self.logger.warning("No file name in transfer dict. Cannot accept request")
         return
     
     if not u"size" in transferDict:
         self.logger.warning("No file size in transfer dict. Cannot accept request")
         return
     
     transferID = transferDict[u"id"]
     size = transferDict[u"size"]
     name = transferDict.get(u"name", None)
     numFiles = transferDict.get(u"count", 1)
     
     if ((peerID, transferID) in self._incoming):
         self.logger.debug(u"Ignoring duplicate file transfer from peer %s (%d)", peerID, transferID)
         return
     
     if not os.path.exists(self._downloadDir):
         os.makedirs(self._downloadDir)
     elif not os.path.isdir(self._downloadDir):
         self.logger.error("Download path %s is no directory. Cannot accept file.")
         return
     
     if numFiles > 1:
         peerName = get_peers().getDisplayedPeerName(pID=peerID)
         if peerName:
             dirName = u"%s (%s)" % (sanitizeForFilename(peerName), peerID)
         else:
             dirName = peerID
         targetDir = os.path.join(self._downloadDir, dirName)
         if not os.path.exists(targetDir) or not os.path.isdir(targetDir):
             targetDir = getUniquePath(targetDir)
             os.makedirs(targetDir)
     else:
         targetDir = self._downloadDir
     
     port = DataReceiverThread.getOpenPort(blockPort=True)
     inThread = DataReceiverThread.receive(peerIP, targetDir, port, transferDict, self.logger, overwrite=self._overwrite, parent=self)
     inThread.setUserData((peerID, transferID))
     inThread.errorOnTransfer.connect(self._errorDownloading)
     inThread.successfullyTransferred.connect(self._removeDownload)
     inThread.transferCanceled.connect(self._transferCanceled)
     inThread.finished.connect(inThread.deleteLater)
     self._incoming[(peerID, transferID)] = inThread
     inThread.start()
     
     self.incomingTransferStarted.emit(peerID, transferID, targetDir, numFiles, size, name, inThread)
     
     answerDict = {u"id" : transferID,
                   u"port" : port}
     get_server().call("HELO_FT_ACK %s" % json.dumps(answerDict), peerIPs=[peerIP])