def head(self, url, timeout=60 * 1000 * 5): headers = { "Authorization": "ROCK0 %s:uselesschars" % (self.owner), "Date": asctime(), "Content-Length": "0" } conn = None try: conn = HTTPConnection(url, timeout=timeout) conn.request(method="HEAD", url=self.getURI(), headers=Utils.signHeader(headers, "HEAD")) #conn.request(method="GET",url="/tomcat.gif") #,headers=headers) response = conn.getresponse() if response.status == 200: rsp_data = response.read() conn.close() conn = None logging.info(" ".join(["HEAD", str(self), "OK"])) return rsp_data else: logging.error(" ".join([ "HEAD", str(self), ", reason:%s" % (response.status), response.reason, str(rsp_data) ].extend(response.getheaders()))) except Exception, e: logging.error(" ".join( ["HEAD", str(self), "Failed, exception:", str(e)]))
def listParts(self,url, timeout = 60 * 1000 * 5): curUrl = self.getURI()+"?uploadId="+self.uploadId headers = { "Content-Length":"0", "x-rock-meta-time":str(time()), "x-rock-meta-coder":"terry", "Authorization":"ROCK0 %s:uselesschars" % (self.owner), "Date": asctime()} conn = None try: #print self.getURI() conn = HTTPConnection(url, timeout = timeout) conn.request(method = "GET", url = curUrl, headers = Utils.signHeader(headers,"GET")) response = conn.getresponse() if response.status == 200: rsp_data = response.read() logging.info(" ".join(["GET", str(self), "OK, result:"])) logging.info(rsp_data) conn.close() print rsp_data return True else: rsp_data = response.read() logging.error(" ".join(["PUT", str(self), ", reason:%s" % (response.status), response.reason, str(rsp_data)])) except Exception, e: logging.error(" ".join(["PUT", str(self), "Failed, exception:", str(e)]))
def drop(self, url, version=0, timeout=60 * 1000 * 5): headers = { "Authorization": "ROCK0 %s:uselesschars" % (self.owner), "Date": asctime(), "Content-Length": 0 } conn = None try: conn = HTTPConnection(url, timeout=timeout) conn.request(method="DELETE", url=self.getURI(), headers=Utils.signHeader(headers, "DELETE")) response = conn.getresponse() if response.status == 200: rsp_data = response.read() logging.info(" ".join(["DROP", str(self), "OK, Result:"])) logging.info(rsp_data) conn.close() return True else: rsp_data = response.read() logging.error(" ".join([ "DROP", str(self), ", reason:%s" % (response.status), response.reason, str(rsp_data) ])) except Exception, e: logging.error(" ".join( ["DROP", str(self), "Failed, exception:", str(e)]))
def get(self, url, version = 0, checkdata = False, timeout = 60 * 1000 * 5): headers = {"Authorization":"ROCK0 %s:uselesschars" % (self.owner), "Date": asctime(), "Content-Length":"0"} conn = None try: conn = HTTPConnection(url, timeout = timeout) conn.request(method = "GET", url = self.getURI(), headers = Utils.signHeader(headers,"GET")) #conn.request(method="GET",url="/tomcat.gif") #,headers=headers) response = conn.getresponse() rsp_data = response.read() if response.status == 200: #print response.getheaders() dataLen = long(response.getheader("Content-Length")) conn.close() conn = None if len(rsp_data) != dataLen: logging.error(" ".join(["GET", str(self), "Failed, reason: data len error (", len(rsp_data), ",", dataLen, ")"])) return None if checkdata and DataPool.getData(dataLen) != rsp_data: logging.error(" ".join(["GET", str(self), "Failed, reason: data error"])) return None logging.info(" ".join(["GET", str(self), "OK, data size:", str(dataLen)])) return rsp_data else: logging.error(" ".join(["GET", str(self), ", reason:%s" % (response.status), response.reason, str(rsp_data)])) except Exception, e: logging.error(" ".join(["GET", str(self), "Failed, exception:", str(e)]))
def put(self, url, data, timeout = 60 * 1000 * 5): #1min assert(data) headers = {"Content-Type":"application/octet-stream", "Content-Length":str(len(data)), "x-rock-meta-time":str(time()), "x-rock-meta-coder":"terry", "Authorization":"ROCK0 %s:uselesschars" % (self.owner), "Date": asctime()} conn = None try: #print self.getURI() conn = HTTPConnection(url, timeout = timeout) conn.request(method = "PUT", url = self.getURI(), body = data, headers = Utils.signHeader(headers,"PUT")) response = conn.getresponse() if response.status == 200: rsp_data = response.read() logging.info(" ".join(["PUT", str(self), "OK, result:"])) logging.info(rsp_data) conn.close() return True else: rsp_data = response.read() logging.error(" ".join(["PUT", str(self), ", reason:%s" % (response.status), response.reason, str(rsp_data)])) except Exception, e: logging.error(" ".join(["PUT", str(self), "Failed, exception:", str(e)]))
def putPart(self, url, data, partNumber=1, uploadId=None, timeout=60 * 1000 * 5): #1min assert (data) headers = { "Content-Type": "application/octet-stream", "Content-Length": str(len(data)), "x-rock-meta-time": str(time()), "x-rock-meta-coder": "terry", "Authorization": "ROCK0 %s:uselesschars" % (self.owner), "Date": asctime() } conn = None if not uploadId: uploadId = self.uploadId try: #print self.getURI() conn = HTTPConnection(url, timeout=timeout) curUrl = self.getURI() + "?partNumber=%s&uploadId=%s" % ( partNumber, uploadId) conn.request(method="PUT", url=curUrl, body=data, headers=Utils.signHeader(headers, "PUT")) response = conn.getresponse() if response.status == 200: rsp_data = response.read() logging.info(" ".join(["PUT", str(self), "OK, result:"])) logging.info(rsp_data) conn.close() etag = response.getheader("ETag") self.parts[partNumber] = etag print partNumber, etag return etag else: rsp_data = response.read() logging.error(" ".join([ "PUT", str(self), ", reason:%s" % (response.status), response.reason, str(rsp_data) ])) except Exception, e: logging.error(" ".join( ["PUT", str(self), "Failed, exception:", str(e)]))
def initMultiPart(self, url, timeout=60 * 1000 * 5): #1min curUrl = self.getURI() + "?uploads" headers = { "Content-Type": "application/octet-stream", "Content-Length": "0", "x-rock-meta-time": str(time()), "x-rock-meta-coder": "terry", "Authorization": "ROCK0 %s:uselesschars" % (self.owner), "Date": asctime() } conn = None try: #print self.getURI() conn = HTTPConnection(url, timeout=timeout) conn.request(method="POST", url=curUrl, headers=Utils.signHeader(headers, "POST")) response = conn.getresponse() if response.status == 200: rsp_data = response.read() logging.info(" ".join(["POST", str(self), "OK, result:"])) logging.info(rsp_data) conn.close() print rsp_data """ <UploadId>VXBsb2FkIElEIGZvciA2aWWpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZA</UploadId> """ pos = rsp_data.find("<UploadId>") if pos <= 0: return False pos2 = rsp_data.find("</UploadId>") if pos2 <= pos: return False uploadId = rsp_data[pos + len("<UploadId>"):pos2] print "uploadId:", uploadId self.uploadId = uploadId return uploadId else: rsp_data = response.read() logging.error(" ".join([ "PUT", str(self), ", reason:%s" % (response.status), response.reason, str(rsp_data) ])) except Exception, e: logging.error(" ".join( ["PUT", str(self), "Failed, exception:", str(e)]))
def completeMultiPart(self, url, uploadId=None, timeout=60 * 1000 * 5): conn = None if not uploadId: uploadId = self.uploadId partsXmlFmt = "<Part><PartNumber>%s</PartNumber><ETag>%s</ETag></Part>" partsXml = "" for (k, v) in self.parts.items(): partsXml += partsXmlFmt % (k, v) reqXml = "<CompleteMultipartUpload>" + partsXml + "</CompleteMultipartUpload>" headers = { "Content-Length": str(len(reqXml)), "x-rock-meta-time": str(time()), "x-rock-meta-coder": "terry", "Authorization": "ROCK0 %s:uselesschars" % (self.owner), "Date": asctime() } try: curUrl = self.getURI() + "?uploadId=" + uploadId conn = HTTPConnection(url, timeout=timeout) conn.request(method="POST", url=curUrl, body=reqXml, headers=Utils.signHeader(headers, "POST")) response = conn.getresponse() if response.status == 200: rsp_data = response.read() logging.info(" ".join(["POST", str(self), "OK, result:"])) logging.info(rsp_data) conn.close() print rsp_data return True else: rsp_data = response.read() logging.error(" ".join([ "POST", str(self), ", reason:%s" % (response.status), response.reason, str(rsp_data) ])) except Exception, e: logging.error(" ".join( ["POST", str(self), "Failed, exception:", str(e)]))
def get(self, url, version=0, checkdata=False, timeout=60 * 1000 * 5): headers = { "Authorization": "ROCK0 %s:uselesschars" % (self.owner), "Date": asctime(), "Content-Length": "0" } conn = None try: conn = HTTPConnection(url, timeout=timeout) conn.request(method="GET", url=self.getURI(), headers=Utils.signHeader(headers, "GET")) #conn.request(method="GET",url="/tomcat.gif") #,headers=headers) response = conn.getresponse() rsp_data = response.read() if response.status == 200: #print response.getheaders() dataLen = long(response.getheader("Content-Length")) conn.close() conn = None if len(rsp_data) != dataLen: logging.error(" ".join([ "GET", str(self), "Failed, reason: data len error (", len(rsp_data), ",", dataLen, ")" ])) return None if checkdata and DataPool.getData(dataLen) != rsp_data: logging.error(" ".join( ["GET", str(self), "Failed, reason: data error"])) return None logging.info(" ".join( ["GET", str(self), "OK, data size:", str(dataLen)])) return rsp_data else: logging.error(" ".join([ "GET", str(self), ", reason:%s" % (response.status), response.reason, str(rsp_data) ])) except Exception, e: logging.error(" ".join( ["GET", str(self), "Failed, exception:", str(e)]))
def initMultiPart(self,url, timeout = 60 * 1000 * 5): #1min curUrl = self.getURI()+"?uploads" headers = {"Content-Type":"application/octet-stream", "Content-Length":"0", "x-rock-meta-time":str(time()), "x-rock-meta-coder":"terry", "Authorization":"ROCK0 %s:uselesschars" % (self.owner), "Date": asctime()} conn = None try: #print self.getURI() conn = HTTPConnection(url, timeout = timeout) conn.request(method = "POST", url = curUrl, headers = Utils.signHeader(headers,"POST")) response = conn.getresponse() if response.status == 200: rsp_data = response.read() logging.info(" ".join(["POST", str(self), "OK, result:"])) logging.info(rsp_data) conn.close() print rsp_data """ <UploadId>VXBsb2FkIElEIGZvciA2aWWpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZA</UploadId> """ pos = rsp_data.find("<UploadId>") if pos<=0: return False pos2 = rsp_data.find("</UploadId>") if pos2<=pos: return False uploadId = rsp_data[pos+len("<UploadId>"):pos2] print "uploadId:",uploadId self.uploadId = uploadId return uploadId else: rsp_data = response.read() logging.error(" ".join(["PUT", str(self), ", reason:%s" % (response.status), response.reason, str(rsp_data)])) except Exception, e: logging.error(" ".join(["PUT", str(self), "Failed, exception:", str(e)]))
def completeMultiPart(self,url, uploadId=None, timeout = 60 * 1000 * 5): conn = None if not uploadId: uploadId = self.uploadId partsXmlFmt = "<Part><PartNumber>%s</PartNumber><ETag>%s</ETag></Part>" partsXml = "" for (k,v) in self.parts.items(): partsXml+=partsXmlFmt%(k,v) reqXml = "<CompleteMultipartUpload>"+partsXml+"</CompleteMultipartUpload>" headers = {"Content-Length":str(len(reqXml)), "x-rock-meta-time":str(time()), "x-rock-meta-coder":"terry", "Authorization":"ROCK0 %s:uselesschars" % (self.owner), "Date": asctime()} try: curUrl = self.getURI()+"?uploadId="+uploadId conn = HTTPConnection(url, timeout = timeout) conn.request(method = "POST", url = curUrl, body = reqXml, headers = Utils.signHeader(headers,"POST")) response = conn.getresponse() if response.status == 200: rsp_data = response.read() logging.info(" ".join(["POST", str(self), "OK, result:"])) logging.info(rsp_data) conn.close() print rsp_data return True else: rsp_data = response.read() logging.error(" ".join(["POST", str(self), ", reason:%s" % (response.status), response.reason, str(rsp_data)])) except Exception, e: logging.error(" ".join(["POST", str(self), "Failed, exception:", str(e)]))
def drop(self, url, version = 0, timeout = 60 * 1000 * 5): headers = {"Authorization":"ROCK0 %s:uselesschars" % (self.owner), "Date": asctime(), "Content-Length":0} conn = None try: conn = HTTPConnection(url, timeout = timeout) conn.request(method = "DELETE", url = self.getURI(), headers = Utils.signHeader(headers,"DELETE")) response = conn.getresponse() if response.status == 200: rsp_data = response.read() logging.info(" ".join(["DROP", str(self), "OK, Result:"])) logging.info(rsp_data) conn.close() return True else: rsp_data = response.read() logging.error(" ".join(["DROP", str(self), ", reason:%s" % (response.status), response.reason, str(rsp_data)])) except Exception, e: logging.error(" ".join(["DROP", str(self), "Failed, exception:", str(e)]))
def listParts(self, url, timeout=60 * 1000 * 5): curUrl = self.getURI() + "?uploadId=" + self.uploadId headers = { "Content-Length": "0", "x-rock-meta-time": str(time()), "x-rock-meta-coder": "terry", "Authorization": "ROCK0 %s:uselesschars" % (self.owner), "Date": asctime() } conn = None try: #print self.getURI() conn = HTTPConnection(url, timeout=timeout) conn.request(method="GET", url=curUrl, headers=Utils.signHeader(headers, "GET")) response = conn.getresponse() if response.status == 200: rsp_data = response.read() logging.info(" ".join(["GET", str(self), "OK, result:"])) logging.info(rsp_data) conn.close() print rsp_data return True else: rsp_data = response.read() logging.error(" ".join([ "PUT", str(self), ", reason:%s" % (response.status), response.reason, str(rsp_data) ])) except Exception, e: logging.error(" ".join( ["PUT", str(self), "Failed, exception:", str(e)]))
def head(self, url, timeout = 60 * 1000 * 5): headers = {"Authorization":"ROCK0 %s:uselesschars" % (self.owner), "Date": asctime(), "Content-Length":"0"} conn = None try: conn = HTTPConnection(url, timeout = timeout) conn.request(method = "HEAD", url = self.getURI(), headers = Utils.signHeader(headers,"HEAD")) #conn.request(method="GET",url="/tomcat.gif") #,headers=headers) response = conn.getresponse() if response.status == 200: rsp_data = response.read() conn.close() conn = None logging.info(" ".join(["HEAD", str(self), "OK"])) return rsp_data else: logging.error(" ".join(["HEAD", str(self), ", reason:%s" % (response.status), response.reason, str(rsp_data)].extend(response.getheaders()))) except Exception, e: logging.error(" ".join(["HEAD", str(self), "Failed, exception:", str(e)]))