00e3963a96
Monotone-Parent: f1c001048ccc36181a09a459327f563dbc26e12f Monotone-Revision: aab1e060a1d26a9624f7f84c30d1414ca1969560 Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2010-01-24T20:40:12 Monotone-Branch: ca.inverse.sogo
78 lines
2.1 KiB
Python
78 lines
2.1 KiB
Python
from config import hostname, port, username, password
|
|
import webdavlib
|
|
import urllib
|
|
import base64
|
|
import simplejson
|
|
|
|
|
|
class HTTPPreferencesPOST (webdavlib.HTTPPOST):
|
|
cookie = None
|
|
|
|
def prepare_headers (self):
|
|
headers = webdavlib.HTTPPOST.prepare_headers(self)
|
|
if self.cookie:
|
|
headers["Cookie"] = self.cookie
|
|
return headers
|
|
|
|
class HTTPPreferencesGET (webdavlib.HTTPGET):
|
|
cookie = None
|
|
|
|
def prepare_headers (self):
|
|
headers = webdavlib.HTTPGET.prepare_headers(self)
|
|
if self.cookie:
|
|
headers["Cookie"] = self.cookie
|
|
return headers
|
|
|
|
class preferences:
|
|
login = username
|
|
passw = password
|
|
|
|
def __init__(self, otherLogin = None, otherPassword = None):
|
|
if otherLogin and otherPassword:
|
|
self.login = otherLogin
|
|
self.passw = otherPassword
|
|
|
|
self.client = webdavlib.WebDAVClient(hostname, port,
|
|
self.login, self.passw)
|
|
|
|
authString = \
|
|
base64.urlsafe_b64encode (username+":"+password).replace("=", "%3D")
|
|
self.cookie = \
|
|
"0xHIGHFLYxSOGo=basic%%20%s;%%20SOGo=6C0F6C0F014AC60ED5" % authString
|
|
|
|
self.preferencesMap = {"language": "2.1.0.3.0.1.3.1.1.3.1.2"}
|
|
|
|
def set(self, preference, value):
|
|
formKey = self.preferencesMap[preference]
|
|
content = "%s=%s" % (formKey, value)
|
|
url = "/SOGo/so/%s/preferences" % self.login
|
|
|
|
post = HTTPPreferencesPOST (url, content)
|
|
post.content_type = "application/x-www-form-urlencoded"
|
|
post.cookie = self.cookie
|
|
|
|
self.client.execute (post)
|
|
|
|
# Raise an exception if the language wasn't properly set
|
|
if post.response["status"] != 200:
|
|
raise Exception ("failure setting language, (code = %d)" \
|
|
% post.response["status"])
|
|
|
|
def get(self, preference):
|
|
url = "/SOGo/so/%s/preferences/jsonDefaults" % self.login
|
|
get = HTTPPreferencesGET (url)
|
|
get.cookie = self.cookie
|
|
self.client.execute (get)
|
|
content = simplejson.loads(get.response['body'])
|
|
result = None
|
|
try:
|
|
result = content[preference]
|
|
except:
|
|
pass
|
|
return result
|
|
|
|
# Simple main to test this class
|
|
if __name__ == "__main__":
|
|
p = preferences ()
|
|
p.set ("language", 6)
|