SHOW:
|
|
- or go back to the newest paste.
1 | diff --git a/flumotion/component/misc/httpserver/ourmimetypes.py b/flumotion/component/misc/httpserver/ourmimetypes.py | |
2 | index 4f67db8..7e240cd 100644 | |
3 | --- a/flumotion/component/misc/httpserver/ourmimetypes.py | |
4 | +++ b/flumotion/component/misc/httpserver/ourmimetypes.py | |
5 | @@ -22,6 +22,12 @@ | |
6 | import os | |
7 | ||
8 | from twisted.web import static | |
9 | +from twisted.internet import inotify | |
10 | +from twisted.python import filepath | |
11 | + | |
12 | +from flumotion.common import log | |
13 | + | |
14 | +MIMETYPE_LOCATIONS = ['/etc/mime.types'] | |
15 | ||
16 | ||
17 | class MimeTypes(object): | |
18 | @@ -29,7 +35,7 @@ class MimeTypes(object): | |
19 | @staticmethod | |
20 | def loadMimeTypes(): | |
21 | # Add our own mime types to the ones parsed from /etc/mime.types | |
22 | - d = static.loadMimeTypes() | |
23 | + d = static.loadMimeTypes(MIMETYPE_LOCATIONS) | |
24 | d['.flv'] = 'video/x-flv' | |
25 | d['.mp4'] = 'video/mp4' | |
26 | d['.webm'] = 'video/webm' | |
27 | @@ -37,7 +43,16 @@ class MimeTypes(object): | |
28 | ||
29 | def __init__(self): | |
30 | self._mimetypes = self.loadMimeTypes() | |
31 | + self.notifier = inotify.INotify() | |
32 | + self.notifier.startReading() | |
33 | + for loc in MIMETYPE_LOCATIONS: | |
34 | + self.notifier.watch(filepath.FilePath(loc), mask=inotify.IN_MODIFY, | |
35 | + callbacks=[self.notify]) | |
36 | ||
37 | def fromPath(self, path, default=None): | |
38 | ext = os.path.splitext(path)[1] | |
39 | return self._mimetypes.get(ext.lower(), default) | |
40 | + | |
41 | + def notify(self, ignored, filepath, mask): | |
42 | + log.debug('mimetypes', 'Mime type file changed %s' % filepath) | |
43 | + self._mimetypes = self.loadMimeTypes() |