|
1 #!/usr/bin/env python |
|
2 # -*- coding: utf-8 -*- |
|
3 # |
|
4 #Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD |
|
5 # |
|
6 #See COPYING file for copyrights details. |
|
7 # |
|
8 #This library is free software; you can redistribute it and/or |
|
9 #modify it under the terms of the GNU General Public |
|
10 #License as published by the Free Software Foundation; either |
|
11 #version 2.1 of the License, or (at your option) any later version. |
|
12 # |
|
13 #This library is distributed in the hope that it will be useful, |
|
14 #but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
16 #General Public License for more details. |
|
17 # |
|
18 #You should have received a copy of the GNU General Public |
|
19 #License along with this library; if not, write to the Free Software |
|
20 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
21 |
|
22 # Package initialisation |
|
23 |
|
24 from os import listdir, path |
|
25 |
|
26 _base_path = path.split(__file__)[0] |
|
27 |
|
28 connector_types = [name for name in listdir(_base_path) if path.isdir(path.join(_base_path, name)) and name.upper() != "CVS" and not name.startswith("__")] |
|
29 |
|
30 def ConnectorFactory(uri, pluginsroot): |
|
31 """ |
|
32 Return a connector corresponding to the URI |
|
33 or None if cannot connect to URI |
|
34 """ |
|
35 servicetype = uri.split("://")[0] |
|
36 if servicetype in connector_types: |
|
37 # import module according to uri type |
|
38 connectormodule = getattr(__import__("connectors."+servicetype), servicetype) |
|
39 factoryname = servicetype + "_connector_factory" |
|
40 return getattr(connectormodule, factoryname)(uri, pluginsroot) |
|
41 else : |
|
42 return None |
|
43 |