Detect now handles creating a reader.

Finished writing detect_format and hence auto_detect (could it really be?)
is_valid() doesn't need to take in a filename (already has it).
This commit is contained in:
John Garland 2009-09-13 13:51:00 +00:00
parent d6597bdc22
commit 0952f84d6c
3 changed files with 30 additions and 21 deletions

View File

@ -48,9 +48,7 @@ import deluge.component as component
import deluge.configmanager
from deluge.core.rpcserver import export
from deluge.httpdownloader import download_file
from decompressers import Zipped, GZipped, BZipped2
from readers import EmuleReader, SafePeerReader, PeerGuardianReader
from detect import detect_compression, detect_format, UnknownFormatError
from detect import detect_compression, detect_format, create_reader, UnknownFormatError
# TODO: check return values for deferred callbacks
# TODO: review class attributes for redundancy
@ -67,18 +65,6 @@ DEFAULT_PREFS = {
"try_times": 3,
}
DECOMPRESSERS = {
"Zip" : Zipped,
"GZip" : GZipped,
"BZip2" : BZipped2
}
READERS = {
"Emule" : EmuleReader,
"SafePeer" : SafePeerReader,
"PeerGuardian" : PeerGuardianReader
}
# Constants
BLOCK_RANGE = 1
@ -96,9 +82,7 @@ class Core(CorePluginBase):
self.core = component.get("Core")
self.config = deluge.configmanager.ConfigManager("blocklist.conf", DEFAULT_PREFS)
self.reader = READERS.get(self.config["list_type"])
if self.config["list_compression"]:
self.reader = DECOMPRESSERS.get(self.config["list_compression"])(self.reader)
self.reader = create_reader(self.config["list_type"], self.config["list_compression"])
update_now = False
if self.config["load_on_start"]:

View File

@ -33,12 +33,27 @@
#
#
from decompressers import Zipped, GZipped, BZipped2
from readers import EmuleReader, SafePeerReader, PeerGuardianReader
COMPRESSION_TYPES = {
"PK" : "zip",
"\x1f\x8b" : "gzip",
"BZ" : "bzip2"
}
DECOMPRESSERS = {
"Zip" : Zipped,
"GZip" : GZipped,
"BZip2" : BZipped2
}
READERS = {
"Emule" : EmuleReader,
"SafePeer" : SafePeerReader,
"PeerGuardian" : PeerGuardianReader
}
class UnknownFormatError(Exception):
pass
@ -49,5 +64,15 @@ def detect_compression(filename):
return COMPRESSION_TYPES.get(magic_number, "")
def detect_format(filename, compression=""):
# TODO: implement this function
return ""
format = ""
for reader in READERS:
if create_reader(reader, compression)(filename).is_valid():
format = reader
break
return format
def create_reader(format, compression=""):
reader = READERS.get(format)
if compression:
reader = DECOMPRESSERS.get(compression)(reader)
return reader

View File

@ -60,7 +60,7 @@ class BaseReader(object):
"""Ignore commented lines and blank lines"""
return line.startswith('#') or not line.strip()
def is_valid(self, file):
def is_valid(self):
"""Determines whether file is valid for this reader"""
blocklist = self.open()
valid = True