comparison redirector/redirectors.py @ 0:af82aaec0377

initial import of redirector
author k0s <k0scist@gmail.com>
date Mon, 07 Sep 2009 15:15:48 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:af82aaec0377
1 from datetime import datetime
2 from dateutil.parser import parse
3 from ConfigParser import ConfigParser
4
5
6 class TestRedirector(object):
7 def redirects(self):
8 return [ { 'from': '/foo.txt', 'to': '/bar.txt',
9 'type': 301,
10 'created': datetime.now(),
11 'expires': None },
12 { 'from': 'http://127.0.0.1:5521/(.*)',
13 'to': r'http://localhost:5521/\1',
14 'type': 'metarefresh',
15 'seconds': 10,
16 'created': datetime.now(),
17 'expires': None },
18 ]
19 def set(self, _from, to, type=301, expires=None, seconds=None, reason=None):
20 # test only....does not set anything
21 return
22
23 def add(self, _from, to, type=301, expires=None, seconds=None):
24 self.set(_from, to, type, expires, seconds)
25
26 class IniRedirector(object):
27 def __init__(self, ini):
28 self.ini = ini
29
30 def redirects(self):
31 parser = ConfigParser()
32 parser.read(self.ini)
33
34 redirects = []
35
36 for section in parser.sections():
37 redirect = { 'from': section }
38 assert parser.has_option(section, 'to')
39 assert parser.has_option(section, 'type')
40 redirect['to'] = parser.get(section, 'to')
41 if parser.has_option(section, 'created'):
42 redirect['created'] = parse(parser.get(section, 'created'))
43 else:
44 redirect['created'] = None
45 _type = parser.get(section, 'type')
46 try:
47 _type = int(_type)
48 except ValueError:
49 assert _type == 'metarefresh'
50 redirect['type'] = _type
51 if parser.has_option(section, 'expires'):
52 redirect['expires'] = parse(parser.get(section, 'expires'))
53 else:
54 redirect['expires'] = None
55 if parser.has_option(section, 'reason'):
56 redirect['reason'] = parser.get(section, 'reason')
57 if parser.has_option(section, 'seconds'):
58 redirect['seconds'] = parser.getint(section, 'seconds')
59 redirects.append(redirect)
60 return redirects
61
62 def set(self, _from, to, type=301, expires=None, seconds=None, reason=None):
63 parser = ConfigParser()
64 parser.read(self.ini)
65 raise NotImplementedError # TODO
66
67 def add(self, _from, to, type=301, expires=None, seconds=None):
68 raise NotImplementedError # TODO
69 parser = ConfigParser()
70 parser.read(self.ini)
71 self.set(_from, to, type, expires, seconds)