Mercurial > hg > redirector
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) |