def run(self): try: self.mutex.lock() self.state = RunnableState.RUNNING s = SCSBucket(self.bucketName) if self.key.rfind('/') == len(self.key)-1 : m = (("prefix", smart_str(self.key)), ("delimiter", '/'), ("max-keys", 5), ("formatter","json")) args = dict((str(k), str(v)) for (k, v) in m if v is not None) response = s.send(s.request(key='', args=args)) files_generator = SCSListing.parse(response) if files_generator.contents_quantity > 0 or files_generator.common_prefixes_quantity > 0 : for item in files_generator: if cmp(item[0],self.key) != 0: self.emitter.emit(QtCore.SIGNAL("DeleteObjectForbidden(PyQt_PyObject,PyQt_PyObject)"), self, u'不能删除非空目录(前缀) ') return # s = SCSBucket(self.bucketName) self.response = s.send(s.request(method="DELETE", key=self.key)) except SCSError, e: self.state = RunnableState.DID_FAILED self.response = SCSResponse(e.urllib2Request, e.urllib2Response) self.response._responseBody = e.data self.emitter.emit(QtCore.SIGNAL("DeleteObjectDidFailed(PyQt_PyObject,PyQt_PyObject)"), self, e.msg) return
def run(self): try: self.mutex.lock() self.state = RunnableState.RUNNING s = SCSBucket(self.bucketName) # if self.key.rfind('/') == len(self.key)-1 : # m = (("prefix", smart_str(self.key)), # ("delimiter", '/'), # ("max-keys", 5), # ("formatter","json")) # args = dict((str(k), str(v)) for (k, v) in m if v is not None) # response = s.send(s.request(key='', args=args)) # files_generator = SCSListing.parse(response) # # if files_generator.contents_quantity > 0 or files_generator.common_prefixes_quantity > 0 : # for item in files_generator: # if cmp(item[0],self.key) != 0: # self.emitter.emit(QtCore.SIGNAL("DeleteObjectForbidden(PyQt_PyObject,PyQt_PyObject)"), self, u'不能删除非空目录(前缀) ') # return # s = SCSBucket(self.bucketName) if self.key.endswith('/') is not True: #文件 self.response = s.send(s.request(method="DELETE", key=self.key)) else: #目录 m = (("prefix", smart_str(self.key)), ("formatter", "json")) args = dict((str(k), str(v)) for (k, v) in m if v is not None) response = s.send(s.request(key='', args=args)) files_generator = SCSListing.parse(response) ''' 根据bucketName获取bucket下得所有文件 ''' #name, isPrefix, sha1, expiration_time, modify, owner, md5, content_type, size for item in files_generator: fileNameStr = item[0] if not item[1]: self.response = s.send( s.request(method="DELETE", key=fileNameStr)) except SCSError, e: self.state = RunnableState.DID_FAILED self.response = SCSResponse(e.urllib2Request, e.urllib2Response) self.response._responseBody = e.data self.emitter.emit( QtCore.SIGNAL( "DeleteObjectDidFailed(PyQt_PyObject,PyQt_PyObject)"), self, e.msg) return
def run(self): try: self.mutex.lock() self.state = RunnableState.RUNNING s = SCSBucket(self.bucketName) # self.response = s[self.key] headers = {} ''' 若文件存在,则received等于已下载的文件大小 ''' if os.path.exists(self.tmpFilePath): self.received = os.stat(self.tmpFilePath).st_size headers['If-Range'] = u'"%s"'%self.fileMD5 headers['Range'] = u'bytes=%d-'%self.received self.response = s.send(s.request(key=self.key,headers=headers)) statusCode = getattr(self.response.urllib2Response, "code", None) responseHeaders = dict(self.response.urllib2Response.info()) if statusCode == 200: if "content-length" in responseHeaders: self.total = long(responseHeaders["content-length"]) else: raise ValueError("Content-Length not returned!!") elif statusCode == 206: ''' 用于断点续传时获取文件总大小 ''' if "content-range" in responseHeaders: content_range = responseHeaders["content-range"] self.total = long(content_range[content_range.rfind('/')+1:]) else: raise ValueError("Content-Length not returned!!") lastTimestamp = time.time() CHUNK = 16 * 1024 _received_tmp = 0 #内部临时变量 with open(self.tmpFilePath, 'ab') as fp: while True: if self.isAbort: self.state = RunnableState.DID_CANCELED self.response._responseBody = u'手动取消' self.emitter.emit(QtCore.SIGNAL("DownloadObjectDidCanceled(PyQt_PyObject)"), self) return chunk = self.response.read(CHUNK) if not chunk: break fp.write(chunk) _received_tmp += len(chunk) if time.time() - lastTimestamp >= 1.0: self.downloadCallBack(_received_tmp) lastTimestamp = time.time() _received_tmp = 0 except SCSError, e: self.state = RunnableState.DID_FAILED self.response = SCSResponse(e.urllib2Request, e.urllib2Response) self.response._responseBody = e.data self.emitter.emit(QtCore.SIGNAL("DownloadObjectDidFailed(PyQt_PyObject,PyQt_PyObject)"), self, e.msg) return
def run(self): s = SCSBucket(self.bucketName) try: self.mutex.lock() self.state = RunnableState.RUNNING self.response = s.send(s.request(method="DELETE", key=None)) except SCSError, e: self.state = RunnableState.DID_FAILED self.response = SCSResponse(e.urllib2Request, e.urllib2Response) self.response._responseBody = e.data self.emitter.emit(QtCore.SIGNAL("DeleteBucketRunnableDidFailed(PyQt_PyObject,PyQt_PyObject)"), self, e.msg) return
def run(self): try: self.mutex.lock() self.state = RunnableState.RUNNING s = SCSBucket(self.bucketName) self.response = s.send(s.request(method="GET", key=None, subresource='meta')) metaResult = json.loads(self.response.read()) self.response.close() except SCSError, e: self.state = RunnableState.DID_FAILED self.response = SCSResponse(e.urllib2Request, e.urllib2Response) self.response._responseBody = e.data self.emitter.emit(QtCore.SIGNAL("BucketInfoDidFailed(PyQt_PyObject,PyQt_PyObject)"), self, e.msg) return
def run(self): s = SCSBucket(self.bucketName) try: self.mutex.lock() self.state = RunnableState.RUNNING self.response = s.send(s.request(method="DELETE", key=None)) except SCSError, e: self.state = RunnableState.DID_FAILED self.response = SCSResponse(e.urllib2Request, e.urllib2Response) self.response._responseBody = e.data self.emitter.emit( QtCore.SIGNAL( "DeleteBucketRunnableDidFailed(PyQt_PyObject,PyQt_PyObject)" ), self, e.msg) return
def run(self): try: self.mutex.lock() self.state = RunnableState.RUNNING s = SCSBucket() self.response = s.send(s.request(key='')) bucketJsonObj = json.loads(self.response.read()) self.response.close() self.buckets = bucketJsonObj['Buckets'] except SCSError, e: self.state = RunnableState.DID_FAILED self.response = SCSResponse(e.urllib2Request, e.urllib2Response) self.response._responseBody = e.data self.emitter.emit(QtCore.SIGNAL("ListBucketRunnableDidFailed(PyQt_PyObject,PyQt_PyObject)"), self, e.msg) return
def run(self): try: self.mutex.lock() self.state = RunnableState.RUNNING s = SCSBucket(self.bucketName) scsResponse = s.send(s.request(method="HEAD", key=self.key)) info = info_dict(dict(scsResponse.urllib2Response.info())) scsResponse.close() self.response = scsResponse except SCSError, e: self.response = SCSResponse(e.urllib2Request, e.urllib2Response) self.response._responseBody = e.data self.state = RunnableState.DID_FAILED self.emitter.emit(QtCore.SIGNAL("fileInfoDidFailed(PyQt_PyObject,PyQt_PyObject)"), self, e.msg) return
def run(self): try: self.mutex.lock() self.state = RunnableState.RUNNING s = SCSBucket(self.bucketName) self.response = s.send( s.request(method="GET", key=None, subresource='meta')) metaResult = json.loads(self.response.read()) self.response.close() except SCSError, e: self.state = RunnableState.DID_FAILED self.response = SCSResponse(e.urllib2Request, e.urllib2Response) self.response._responseBody = e.data self.emitter.emit( QtCore.SIGNAL( "BucketInfoDidFailed(PyQt_PyObject,PyQt_PyObject)"), self, e.msg) return
def run(self): try: self.mutex.lock() self.state = RunnableState.RUNNING s = SCSBucket() self.response = s.send(s.request(key='')) bucketJsonObj = json.loads(self.response.read()) self.response.close() self.buckets = bucketJsonObj['Buckets'] except SCSError, e: self.state = RunnableState.DID_FAILED self.response = SCSResponse(e.urllib2Request, e.urllib2Response) self.response._responseBody = e.data self.emitter.emit( QtCore.SIGNAL( "ListBucketRunnableDidFailed(PyQt_PyObject,PyQt_PyObject)" ), self, e.msg) return
def run(self): try: self.mutex.lock() self.state = RunnableState.RUNNING s = SCSBucket(self.bucketName) scsResponse = s.send(s.request(method="HEAD", key=self.key)) info = info_dict(dict(scsResponse.urllib2Response.info())) scsResponse.close() self.response = scsResponse except SCSError, e: self.response = SCSResponse(e.urllib2Request, e.urllib2Response) self.response._responseBody = e.data self.state = RunnableState.DID_FAILED self.emitter.emit( QtCore.SIGNAL( "fileInfoDidFailed(PyQt_PyObject,PyQt_PyObject)"), self, e.msg) return
def run(self): try: self.mutex.lock() self.state = RunnableState.RUNNING s = SCSBucket(self.bucketName) m = (("prefix", smart_str(self.prefix)), ("marker", self.marker), ("max-keys", self.limit), ("delimiter", self.delimiter), ("formatter", "json")) args = dict((str(k), str(v)) for (k, v) in m if v is not None) self.response = s.send(s.request(key='', args=args)) self.files_generator = SCSListing.parse(self.response) except SCSError, e: self.state = RunnableState.DID_FAILED self.response = SCSResponse(e.urllib2Request, e.urllib2Response) self.response._responseBody = e.data self.emitter.emit( QtCore.SIGNAL("ListDirDidFailed(PyQt_PyObject,PyQt_PyObject)"), self, e.msg) return
def run(self): try: self.mutex.lock() self.state = RunnableState.RUNNING s = SCSBucket(self.bucketName) m = (("prefix", smart_str(self.prefix)), ("marker", self.marker), ("max-keys", self.limit), ("delimiter", self.delimiter), ("formatter","json")) args = dict((str(k), str(v)) for (k, v) in m if v is not None) self.response = s.send(s.request(key='', args=args)) self.files_generator = SCSListing.parse(self.response) except SCSError, e: self.state = RunnableState.DID_FAILED self.response = SCSResponse(e.urllib2Request, e.urllib2Response) self.response._responseBody = e.data self.emitter.emit(QtCore.SIGNAL("ListDirDidFailed(PyQt_PyObject,PyQt_PyObject)"), self, e.msg) return
def run(self): try: self.mutex.lock() self.state = RunnableState.RUNNING s = SCSBucket(self.bucketName) # self.response = s[self.key] headers = {} ''' 若文件存在,则received等于已下载的文件大小 ''' if os.path.exists(self.tmpFilePath): self.received = os.stat(self.tmpFilePath).st_size headers['If-Range'] = u'"%s"' % self.fileMD5 headers['Range'] = u'bytes=%d-' % self.received self.response = s.send(s.request(key=self.key, headers=headers)) statusCode = getattr(self.response.urllib2Response, "code", None) responseHeaders = dict(self.response.urllib2Response.info()) if statusCode == 200: if "content-length" in responseHeaders: self.total = long(responseHeaders["content-length"]) else: self.total = 0 elif statusCode == 206: ''' 用于断点续传时获取文件总大小 ''' if "content-range" in responseHeaders: content_range = responseHeaders["content-range"] self.total = long(content_range[content_range.rfind('/') + 1:]) else: # raise ValueError("Content-Length not returned!!") self.state = RunnableState.DID_FAILED self.response._responseBody = u'Content-Length not returned!!' self.emitter.emit( QtCore.SIGNAL( "DownloadObjectDidFailed(PyQt_PyObject,PyQt_PyObject)" ), self, self.response._responseBody) return lastTimestamp = time.time() CHUNK = 16 * 1024 _received_tmp = 0 #内部临时变量 with open(self.tmpFilePath, 'ab') as fp: while True: if self.isAbort: self.state = RunnableState.DID_CANCELED self.response._responseBody = u'手动取消' self.emitter.emit( QtCore.SIGNAL( "DownloadObjectDidCanceled(PyQt_PyObject)"), self) return chunk = self.response.read(CHUNK) if not chunk: break fp.write(chunk) _received_tmp += len(chunk) if time.time() - lastTimestamp >= 1.0: self.downloadCallBack(_received_tmp) lastTimestamp = time.time() _received_tmp = 0 except SCSError, e: self.state = RunnableState.DID_FAILED self.response = SCSResponse(e.urllib2Request, e.urllib2Response) self.response._responseBody = e.data self.emitter.emit( QtCore.SIGNAL( "DownloadObjectDidFailed(PyQt_PyObject,PyQt_PyObject)"), self, e.msg) return