self.onHeaderLoaded = []\r
\r
self.data=""\r
+ self.readsize = 0\r
+ self.headers= {}\r
\r
+ def _DataRecived(self,data):\r
+ self.readsize += len(data)\r
+ self.data += data\r
+ \r
def getIPAdress(self):\r
""" \r
socket.gethostbyname() is syncron\r
def HeaderLoaded(self,headers):\r
self.headers = headers\r
for i in self.onHeaderLoaded:\r
- i(headers)\r
+ if i is not None:\r
+ i(headers)\r
self.onHeaderLoaded=[]\r
\r
def RequestError(self,error):\r
for i in self.onRequestError:\r
- i(error)\r
+ if i is not None:\r
+ i(error)\r
self.onRequestError = []\r
\r
def RequestFinished(self,data):\r
for i in self.onRequestFinished:\r
- i(data)\r
+ if i is not None:\r
+ i(data)\r
\r
class Enigma2URLHTTPRequest(Enigma2HTTPRequest):\r
def __init__(self,url,method="GET",headerfields={}):\r
port = 80\r
path=x[2]\r
Enigma2HTTPRequest.__init__(self,hostname,path,port,method=method,headerfields=headerfields)\r
+\r
+class Enigma2FileHTTPRequest(Enigma2URLHTTPRequest):\r
+ def __init__(self,targetfile,url,method="GET",headerfields={}):\r
+ Enigma2URLHTTPRequest.__init__(self,url,method=method,headerfields=headerfields)\r
+ self.filehandle = open(targetfile,"w")\r
+ self.onRequestFinished.append(self.close)\r
+ self.onRequestError.append(self.close)\r
+ def close(self,dummy):\r
+ self.filehandle.close()\r
\r
+ def _DataRecived(self,data):\r
+ self.readsize += len(data)\r
+ self.filehandle.write(data)\r
+ \r
+ \r
+ \r
+ \r
class Enigma2HTTPProtocol(HTTPClientProtocol):\r
- headers={}\r
- headerread=False\r
- responseFirstLine = True # to indikate, that first line of responseheader was read\r
\r
def __init__(self,request):\r
self.request = request\r
+ self.headers={}\r
+ self.headerread=False\r
+ self.responseFirstLine = True # to indikate, that first line of responseheader was read\r
HTTPClientProtocol.__init__(self)\r
self.setRawMode()\r
\r
def rawDataReceived(self,line):\r
for l in line.split(self.delimiter): \r
if self.headerread:\r
- self.request.data +=l\r
+ self.request._DataRecived(l)\r
else:\r
if l == "":\r
self.headerread = True\r
"""\r
req = Enigma2URLHTTPRequest(url,method=method,headerfields=headers)\r
req.onRequestError.append(errorback)\r
+ req.onHeaderLoaded.append(headercallback)\r
req.onRequestFinished.append(callback)\r
reactor.connectTCP(req.getIPAdress(),req.port, Enigma2HTTPClientFactory(req))\r
+ return req\r
\r
-def getPage(hostname,port,path,method="GET",callback=None,errorback=None):#,headercallback=None,headers={}):\r
+def getPage(hostname,port,path,method="GET",callback=None,errorback=None,headercallback=None,headers={}):\r
""" \r
this will is called with separte hostname,port,path\r
hostname = www.hostna.me <string>\r
port = 80 <int>\r
path= /somewhere/on/the/server <string>\r
"""\r
- req = Enigma2HTTPRequest(hostname,path,port,method=method)#,headerfields=headers)\r
+ req = Enigma2HTTPRequest(hostname,path,port,method=method,headerfields=headers)\r
req.onRequestError.append(errorback)\r
req.onRequestFinished.append(callback)\r
reactor.connectTCP(req.getIPAdress(),req.port, Enigma2HTTPClientFactory(req))\r
+ return req\r
\r
def getFile(filename,url,method="GET",callback=None,errorback=None,headercallback=None,headers={}):\r
""" \r
fimename = /tmp/target.jpg \r
url = http://www.hostna.me/somewhere/on/the/server.jpg <string>\r
"""\r
- def save(data):\r
- try:\r
- fp = open(filename,"w")\r
- fp.write(data)\r
- fp.close()\r
- if callback is not None:\r
- callback()\r
- except Exception,e:\r
- if errorback is not None:\r
- errorback(e)\r
- getURL(url,method=method,callback=save,errorback=errorback,headercallback=headercallback,headers=headers)\r
+ req = Enigma2FileHTTPRequest(filename,url,method=method,headerfields=headers)\r
+ req.onRequestError.append(errorback)\r
+ req.onHeaderLoaded.append(headercallback)\r
+ req.onRequestFinished.append(callback)\r
+ reactor.connectTCP(req.getIPAdress(),req.port, Enigma2HTTPClientFactory(req))\r
+ return req\r