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
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])