diff --git a/deluge/ui/web/server.py b/deluge/ui/web/server.py index 1ef115df3..48dd1f2a0 100644 --- a/deluge/ui/web/server.py +++ b/deluge/ui/web/server.py @@ -32,6 +32,7 @@ import gettext import hashlib import logging import tempfile +import mimetypes import pkg_resources from twisted.application import service, internet @@ -186,31 +187,46 @@ class Flag(resource.Resource): request.setResponseCode(http.NOT_FOUND) return "" -class Icons(resource.Resource): +class LookupResource(resource.Resource, component.Component): + + def __init__(self, name, *directories): + resource.Resource.__init__(self) + component.Component.__init__(self, name) + self.__directories = directories + + @property + def directories(self): + return self.__directories + def getChild(self, path, request): - request.icon = path + request.path = path return self def render(self, request): - headers = {} - print request.icon - return "" + for lookup in self.directories: + if request.path in os.listdir(lookup): + path = os.path.join(lookup, request.path) + mime_type = mimetypes.guess_type(path) + request.setHeader("content-type", mime_type[0]) + return open(path).read() + request.setResponseCode(http.NOT_FOUND) + return "