summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2011-02-10 23:43:10 +0100
committerGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2011-02-10 23:43:10 +0100
commit2b353fa266c13b77b2c77af797dc28c8380b9443 (patch)
treedb1e1b9f67cf87ffb711f91c643d665bae1bee8a
parentthrift + setup fixes (diff)
downloadpyload-2b353fa266c13b77b2c77af797dc28c8380b9443.tar.xz
more fixes
-rw-r--r--module/remote/ThriftBackend.py5
-rw-r--r--module/remote/thriftbackend/Handler.py12
-rw-r--r--module/remote/thriftbackend/Processor.py2
-rw-r--r--module/remote/thriftbackend/Protocol.py30
-rw-r--r--module/remote/thriftbackend/ThriftTest.py10
-rw-r--r--module/remote/thriftbackend/pyload.thrift8
-rw-r--r--module/remote/thriftbackend/thriftgen/pyload/ttypes.py47
-rw-r--r--module/web/json_app.py6
8 files changed, 81 insertions, 39 deletions
diff --git a/module/remote/ThriftBackend.py b/module/remote/ThriftBackend.py
index bbad7e7d6..9e645b07e 100644
--- a/module/remote/ThriftBackend.py
+++ b/module/remote/ThriftBackend.py
@@ -19,10 +19,11 @@ from module.remote.RemoteManager import BackendBase
from thriftbackend.Handler import Handler
from thriftbackend.Processor import Processor
+from thriftbackend.Protocol import ProtocolFactory
from thrift.transport import TSocket
from thrift.transport import TTransport
-from thrift.protocol import TBinaryProtocol
+
from thrift.server import TServer
class ThriftBackend(BackendBase):
@@ -32,7 +33,7 @@ class ThriftBackend(BackendBase):
transport = TSocket.TServerSocket(7228)
#@TODO unicode encoding
tfactory = TTransport.TBufferedTransportFactory()
- pfactory = TBinaryProtocol.TBinaryProtocolFactory()
+ pfactory = ProtocolFactory()
#self.server = TServer.TSimpleServer(processor, transport, tfactory, pfactory)
self.server = TServer.TThreadedServer(processor, transport, tfactory, pfactory)
diff --git a/module/remote/thriftbackend/Handler.py b/module/remote/thriftbackend/Handler.py
index de7232758..da77b8ed2 100644
--- a/module/remote/thriftbackend/Handler.py
+++ b/module/remote/thriftbackend/Handler.py
@@ -1,3 +1,5 @@
+# -*- coding: utf-8 -*-
+
from thriftgen.pyload.ttypes import *
from thriftgen.pyload.Pyload import Iface
@@ -130,7 +132,7 @@ class Handler(Iface):
x.active and x.active != "quit"]:
if not isinstance(pyfile, PyFile):
continue
- status = DownloadStatus()
+ status = DownloadInfo()
status.id = pyfile.id
status.name = pyfile.name
status.speed = pyfile.getSpeed() / 1024
@@ -165,19 +167,19 @@ class Handler(Iface):
"""
pdata = PackageData()
rawData = self.serverMethods.get_package_data(pid)
- print rawData
pdata.pid = rawData["id"]
pdata.name = rawData["name"]
pdata.folder = rawData["folder"]
pdata.site = rawData["site"]
pdata.password = rawData["password"]
- pdata.queue = rawData["queue"]
+ pdata.dest = rawData["queue"]
pdata.order = rawData["order"]
pdata.priority = rawData["priority"]
pdata.links = []
for id, pyfile in rawData["links"].iteritems():
pdata.links.append(self._convertPyFile(pyfile))
+
return pdata
def getFileData(self, fid):
@@ -215,7 +217,7 @@ class Handler(Iface):
pdata.folder = pack["folder"]
pdata.site = pack["site"]
pdata.password = pack["password"]
- pdata.queue = pack["queue"]
+ pdata.dest = pack["queue"]
pdata.order = pack["order"]
pdata.priority = pack["priority"]
pdata.links = [int(x) for x in pack["links"].keys()]
@@ -233,7 +235,7 @@ class Handler(Iface):
pdata.folder = pack["folder"]
pdata.site = pack["site"]
pdata.password = pack["password"]
- pdata.queue = pack["queue"]
+ pdata.dest = pack["queue"]
pdata.order = pack["order"]
pdata.priority = pack["priority"]
pdata.links = [int(x) for x in pack["links"].keys()]
diff --git a/module/remote/thriftbackend/Processor.py b/module/remote/thriftbackend/Processor.py
index b3a0991dd..53c6e404d 100644
--- a/module/remote/thriftbackend/Processor.py
+++ b/module/remote/thriftbackend/Processor.py
@@ -1,3 +1,5 @@
+# -*- coding: utf-8 -*-
+
from thriftgen.pyload import Pyload
class Processor(Pyload.Processor):
diff --git a/module/remote/thriftbackend/Protocol.py b/module/remote/thriftbackend/Protocol.py
new file mode 100644
index 000000000..c42d01459
--- /dev/null
+++ b/module/remote/thriftbackend/Protocol.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+
+from thrift.protocol import TBinaryProtocol
+
+class Protocol(TBinaryProtocol.TBinaryProtocol):
+ def writeString(self, str):
+ try:
+ str = str.encode("utf8", "ignore")
+ except Exception, e:
+ pass
+
+ self.writeI32(len(str))
+ self.trans.write(str)
+
+ def readString(self):
+ len = self.readI32()
+ str = self.trans.readAll(len)
+ try:
+ str = str.decode("utf8", "ignore")
+ except:
+ pass
+
+ return str
+
+
+class ProtocolFactory(TBinaryProtocol.TBinaryProtocolFactory):
+
+ def getProtocol(self, trans):
+ prot = Protocol(trans, self.strictRead, self.strictWrite)
+ return prot \ No newline at end of file
diff --git a/module/remote/thriftbackend/ThriftTest.py b/module/remote/thriftbackend/ThriftTest.py
index 9bbb8cbb9..7fe790cd9 100644
--- a/module/remote/thriftbackend/ThriftTest.py
+++ b/module/remote/thriftbackend/ThriftTest.py
@@ -1,4 +1,5 @@
#!/usr/bin/env python
+# -*- coding: utf-8 -*-
import sys
from os.path import join,abspath,dirname
@@ -12,7 +13,8 @@ from thriftgen.pyload.ttypes import *
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
-from thrift.protocol import TBinaryProtocol
+
+from Protocol import Protocol
from time import sleep, time
@@ -52,7 +54,7 @@ try:
transport = TTransport.TBufferedTransport(transport)
# Wrap in a protocol
- protocol = TBinaryProtocol.TBinaryProtocol(transport)
+ protocol = Protocol(transport)
# Create a client to use the protocol encoder
client = Pyload.Client(protocol)
@@ -75,7 +77,9 @@ try:
q = client.getQueue()
for p in q:
- print client.getPackageData(p.pid)
+ data = client.getPackageData(p.pid)
+ print data
+ print "Package Name: ", data.name
# Close!
transport.close()
diff --git a/module/remote/thriftbackend/pyload.thrift b/module/remote/thriftbackend/pyload.thrift
index 7bbdaffd0..aaa843808 100644
--- a/module/remote/thriftbackend/pyload.thrift
+++ b/module/remote/thriftbackend/pyload.thrift
@@ -33,7 +33,7 @@ enum ElementType {
File
}
-struct DownloadStatus {
+struct DownloadInfo {
1: FileID id,
2: string name,
3: i32 speed,
@@ -95,7 +95,7 @@ struct PackageData {
3: string folder,
4: string site,
5: string password,
- 6: Destination destination,
+ 6: Destination dest,
7: i16 order,
8: Priority priority,
9: list<FileData> links
@@ -107,7 +107,7 @@ struct PackageInfo {
3: string folder,
4: string site,
5: string password,
- 6: Destination destination,
+ 6: Destination dest,
7: i16 order,
8: Priority priority,
9: list<FileID> links
@@ -172,7 +172,7 @@ service Pyload {
bool isTimeReconnect(),
//downloads
- list<DownloadStatus> statusDownloads(),
+ list<DownloadInfo> statusDownloads(),
PackageID addPackage(1: string name, 2: LinkList links, 3: Destination dest),
PackageData getPackageData(1: PackageID pid),
FileData getFileData(1: FileID fid),
diff --git a/module/remote/thriftbackend/thriftgen/pyload/ttypes.py b/module/remote/thriftbackend/thriftgen/pyload/ttypes.py
index 91062df33..2b51e1467 100644
--- a/module/remote/thriftbackend/thriftgen/pyload/ttypes.py
+++ b/module/remote/thriftbackend/thriftgen/pyload/ttypes.py
@@ -96,7 +96,7 @@ class ElementType:
}
-class DownloadStatus:
+class DownloadInfo:
"""
Attributes:
- id
@@ -245,7 +245,7 @@ class DownloadStatus:
if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
return
- oprot.writeStructBegin('DownloadStatus')
+ oprot.writeStructBegin('DownloadInfo')
if self.id != None:
oprot.writeFieldBegin('id', TType.I32, 1)
oprot.writeI32(self.id)
@@ -666,7 +666,7 @@ class FileData:
(4, TType.STRING, 'plugin', None, None, ), # 4
(5, TType.I64, 'size', None, None, ), # 5
(6, TType.STRING, 'format_size', None, None, ), # 6
- (7, TType.STRUCT, 'status', (DownloadStatus, DownloadStatus.thrift_spec), None, ), # 7
+ (7, TType.I32, 'status', None, None, ), # 7
(8, TType.STRING, 'statusmsg', None, None, ), # 8
(9, TType.I32, 'package', None, None, ), # 9
(10, TType.STRING, 'error', None, None, ), # 10
@@ -728,9 +728,8 @@ class FileData:
else:
iprot.skip(ftype)
elif fid == 7:
- if ftype == TType.STRUCT:
- self.status = DownloadStatus()
- self.status.read(iprot)
+ if ftype == TType.I32:
+ self.status = iprot.readI32();
else:
iprot.skip(ftype)
elif fid == 8:
@@ -793,8 +792,8 @@ class FileData:
oprot.writeString(self.format_size)
oprot.writeFieldEnd()
if self.status != None:
- oprot.writeFieldBegin('status', TType.STRUCT, 7)
- self.status.write(oprot)
+ oprot.writeFieldBegin('status', TType.I32, 7)
+ oprot.writeI32(self.status)
oprot.writeFieldEnd()
if self.statusmsg != None:
oprot.writeFieldBegin('statusmsg', TType.STRING, 8)
@@ -841,7 +840,7 @@ class PackageData:
- folder
- site
- password
- - destination
+ - dest
- order
- priority
- links
@@ -854,19 +853,19 @@ class PackageData:
(3, TType.STRING, 'folder', None, None, ), # 3
(4, TType.STRING, 'site', None, None, ), # 4
(5, TType.STRING, 'password', None, None, ), # 5
- (6, TType.I32, 'destination', None, None, ), # 6
+ (6, TType.I32, 'dest', None, None, ), # 6
(7, TType.I16, 'order', None, None, ), # 7
(8, TType.BYTE, 'priority', None, None, ), # 8
(9, TType.LIST, 'links', (TType.STRUCT,(FileData, FileData.thrift_spec)), None, ), # 9
)
- def __init__(self, pid=None, name=None, folder=None, site=None, password=None, destination=None, order=None, priority=None, links=None,):
+ def __init__(self, pid=None, name=None, folder=None, site=None, password=None, dest=None, order=None, priority=None, links=None,):
self.pid = pid
self.name = name
self.folder = folder
self.site = site
self.password = password
- self.destination = destination
+ self.dest = dest
self.order = order
self.priority = priority
self.links = links
@@ -907,7 +906,7 @@ class PackageData:
iprot.skip(ftype)
elif fid == 6:
if ftype == TType.I32:
- self.destination = iprot.readI32();
+ self.dest = iprot.readI32();
else:
iprot.skip(ftype)
elif fid == 7:
@@ -961,9 +960,9 @@ class PackageData:
oprot.writeFieldBegin('password', TType.STRING, 5)
oprot.writeString(self.password)
oprot.writeFieldEnd()
- if self.destination != None:
- oprot.writeFieldBegin('destination', TType.I32, 6)
- oprot.writeI32(self.destination)
+ if self.dest != None:
+ oprot.writeFieldBegin('dest', TType.I32, 6)
+ oprot.writeI32(self.dest)
oprot.writeFieldEnd()
if self.order != None:
oprot.writeFieldBegin('order', TType.I16, 7)
@@ -1005,7 +1004,7 @@ class PackageInfo:
- folder
- site
- password
- - destination
+ - dest
- order
- priority
- links
@@ -1018,19 +1017,19 @@ class PackageInfo:
(3, TType.STRING, 'folder', None, None, ), # 3
(4, TType.STRING, 'site', None, None, ), # 4
(5, TType.STRING, 'password', None, None, ), # 5
- (6, TType.I32, 'destination', None, None, ), # 6
+ (6, TType.I32, 'dest', None, None, ), # 6
(7, TType.I16, 'order', None, None, ), # 7
(8, TType.BYTE, 'priority', None, None, ), # 8
(9, TType.LIST, 'links', (TType.I32,None), None, ), # 9
)
- def __init__(self, pid=None, name=None, folder=None, site=None, password=None, destination=None, order=None, priority=None, links=None,):
+ def __init__(self, pid=None, name=None, folder=None, site=None, password=None, dest=None, order=None, priority=None, links=None,):
self.pid = pid
self.name = name
self.folder = folder
self.site = site
self.password = password
- self.destination = destination
+ self.dest = dest
self.order = order
self.priority = priority
self.links = links
@@ -1071,7 +1070,7 @@ class PackageInfo:
iprot.skip(ftype)
elif fid == 6:
if ftype == TType.I32:
- self.destination = iprot.readI32();
+ self.dest = iprot.readI32();
else:
iprot.skip(ftype)
elif fid == 7:
@@ -1124,9 +1123,9 @@ class PackageInfo:
oprot.writeFieldBegin('password', TType.STRING, 5)
oprot.writeString(self.password)
oprot.writeFieldEnd()
- if self.destination != None:
- oprot.writeFieldBegin('destination', TType.I32, 6)
- oprot.writeI32(self.destination)
+ if self.dest != None:
+ oprot.writeFieldBegin('dest', TType.I32, 6)
+ oprot.writeI32(self.dest)
oprot.writeFieldEnd()
if self.order != None:
oprot.writeFieldBegin('order', TType.I16, 7)
diff --git a/module/web/json_app.py b/module/web/json_app.py
index 12b7fa8ce..f10c09498 100644
--- a/module/web/json_app.py
+++ b/module/web/json_app.py
@@ -212,7 +212,8 @@ def link_order(ids):
def add_package():
name = request.forms['add_name']
queue = int(request.forms['add_dest'])
- links = request.forms['add_links'].split("\n")
+ links = request.forms['add_links'].decode("utf8", "ignore")
+ links = links.split("\n")
pw = request.forms.get("add_password", "").strip("\n\r")
try:
@@ -232,11 +233,14 @@ def add_package():
if name is None or name == "":
return HTTPError()
+ name = name.decode("utf8", "ignore")
+
links = map(lambda x: x.strip(), links)
links = filter(lambda x: x != "", links)
pack = PYLOAD.add_package(name, links, queue)
if pw:
+ pw = pw.decode("utf8", "ignore")
data = {"password": pw}
PYLOAD.set_package_data(pack, data)