]> git.meshlink.io Git - catta/blob - avahi-utils/avahi/ServiceTypeDatabase.py.in
remove dbus-test.py since it is horribly out of date
[catta] / avahi-utils / avahi / ServiceTypeDatabase.py.in
1 #!@PYTHON@
2 # -*-python-*-
3 # $Id$
4
5 # This file is part of avahi.
6 #
7 # avahi is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU Lesser General Public License as
9 # published by the Free Software Foundation; either version 2 of the
10 # License, or (at your option) any later version.
11 #
12 # avahi is distributed in the hope that it will be useful, but WITHOUT
13 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 # License for more details.
16 #
17 # You should have received a copy of the GNU Lesser General Public
18 # License along with avahi; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
20 # USA.
21
22 import gdbm
23 import locale
24
25 locale.setlocale(locale.LC_ALL, '')
26
27 class ServiceTypeDatabase:
28
29     def __init__(self, filename = "@pkgdatadir@/service-types.db"):
30
31         self.db = gdbm.open(filename, "r")
32
33         l = locale.getlocale(locale.LC_MESSAGES)
34
35         self.suffixes = ()
36
37         if not l[0] is None:
38
39             if not l[1] is None:
40                 self.suffixes += (l[0] + "@" + l[1], )
41
42             self.suffixes += (l[0], )
43
44             i = l[0].find("_")
45
46             if i >= 0:
47
48                 k = l[0][:i]
49                 
50                 if not l[1] is None:
51                     self.suffixes += (k + "@" + l[1], )
52
53                 self.suffixes += (k, )
54             
55             
56         self.suffixes = tuple(map(lambda x:  "["+x+"]", self.suffixes)) + ("", )
57
58     def __getitem__(self, key):
59
60         for suffix in self.suffixes:
61             try:
62                 return self.db[key + suffix]
63             except KeyError:
64                 pass
65
66         raise KeyError()
67
68     def has_key(self, key):
69
70         for suffix in self.suffixes:
71
72             if self.db.has_key(key + suffix):
73                 return True
74             
75         return False
76
77     def __contains__(self, item):
78
79         for suffix in self.suffixes:
80
81             if item+suffix in self.db:
82                 return True
83
84         return False
85         
86
87         
88 if __name__ == "__main__":
89     
90     b = ServiceTypeDatabase()
91
92     print b["_http._tcp"]
93     print b["_ftp._tcp"]
94     print b["_webdav._tcp"]
95     print b["_webdavs._tcp"]
96
97     print b["gurki._tcp"]