pykolab/wap_client
Jeroen van Meeuwen
vanmeeuwen at kolabsys.com
Tue Mar 13 17:17:52 CET 2012
pykolab/wap_client/__init__.py | 31 ++++++++++++++++++-------------
pykolab/wap_client/connect.py | 9 +++++++++
pykolab/wap_client/request.py | 29 +++++++++++++++++++++++++++++
3 files changed, 56 insertions(+), 13 deletions(-)
New commits:
commit 812920a2077860091bd003956fdf4296d187b329
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date: Tue Mar 13 16:17:34 2012 +0000
Split out connect.py and request.py
diff --git a/pykolab/wap_client/__init__.py b/pykolab/wap_client/__init__.py
index 5462961..c7c4115 100644
--- a/pykolab/wap_client/__init__.py
+++ b/pykolab/wap_client/__init__.py
@@ -16,6 +16,9 @@ session_id = None
conn = None
+from connect import connect
+from request import request
+
def authenticate(username=None, password=None):
global session_id
@@ -92,23 +95,23 @@ def get_group_input():
def get_user_input():
user_types = user_types_list()
- if len(user_types.keys()) > 1:
- for key in user_types.keys():
+ if user_types['count'] > 1:
+ for key in user_types['list'].keys():
if not key == "status":
- print "%s) %s" % (key,user_types[key]['name'])
+ print "%s) %s" % (key,user_types['list'][key]['name'])
user_type_id = utils.ask_question("Please select the user type")
- elif len(user_types.keys()) > 0:
+ elif user_types['count'] > 0:
print "Automatically selected the only user type available"
- user_type_id = user_types.keys()[0]
+ user_type_id = user_types['list'].keys()[0]
else:
print "No user types available"
sys.exit(1)
- if user_types.has_key(user_type_id):
- user_type_info = user_types[user_type_id]['attributes']
+ if user_types['list'].has_key(user_type_id):
+ user_type_info = user_types['list'][user_type_id]['attributes']
else:
print "No such user type"
sys.exit(1)
@@ -117,6 +120,8 @@ def get_user_input():
'user_type_id': user_type_id
}
+ print user_type_info
+
for attribute in user_type_info['form_fields'].keys():
params[attribute] = utils.ask_question(attribute)
@@ -170,8 +175,8 @@ def request(method, api_uri, params=None, headers={}):
response = conn.getresponse()
data = response.read()
- #print method, api_uri, params
- #print data
+ print method, api_uri, params
+ print data
try:
response_data = json.loads(data)
@@ -180,7 +185,7 @@ def request(method, api_uri, params=None, headers={}):
print "Response data is not JSON"
sys.exit(1)
- #print response_data
+ print response_data
if response_data['status'] == "OK":
del response_data['status']
@@ -253,8 +258,8 @@ def user_form_value_generate_mail(params=None):
return request('POST', 'user_form_value.generate_mail', params)
-def user_form_value_generate_password(*args, **kw):
- return request('GET', 'user_form_value.generate_password')
+def form_value_generate_password(*args, **kw):
+ return request('GET', 'form_value.generate_password')
def user_form_value_generate_uid(params=None):
if params == None:
@@ -265,7 +270,7 @@ def user_form_value_generate_uid(params=None):
return request('POST', 'user_form_value.generate_uid', params)
def user_form_value_generate_userpassword(*args, **kw):
- result = user_form_value_generate_password()
+ result = form_value_generate_password()
return { 'userpassword': result['password'] }
def user_info():
diff --git a/pykolab/wap_client/connect.py b/pykolab/wap_client/connect.py
new file mode 100644
index 0000000..1c4c7ad
--- /dev/null
+++ b/pykolab/wap_client/connect.py
@@ -0,0 +1,9 @@
+def connect():
+ global conn
+
+ if conn == None:
+ conn = httplib.HTTPConnection(API_HOSTNAME, API_PORT)
+ conn.connect()
+
+ return conn
+
diff --git a/pykolab/wap_client/request.py b/pykolab/wap_client/request.py
new file mode 100644
index 0000000..0613333
--- /dev/null
+++ b/pykolab/wap_client/request.py
@@ -0,0 +1,29 @@
+def request(method, api_uri, params=None, headers={}):
+ global session_id
+
+ if not session_id == None:
+ headers["X-Session-Token"] = session_id
+
+ conn = connect()
+ conn.request(method.upper(), "%s/%s" % (API_BASE,api_uri), params, headers)
+ response = conn.getresponse()
+ data = response.read()
+
+ print method, api_uri, params
+ print data
+
+ try:
+ response_data = json.loads(data)
+ except ValueError, e:
+ # Some data is not JSON
+ print "Response data is not JSON"
+ sys.exit(1)
+
+ print response_data
+
+ if response_data['status'] == "OK":
+ del response_data['status']
+ return response_data['result']
+ else:
+ return response_data['result']
+
More information about the commits
mailing list