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