0
|
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)
|