import urllib2 from urllib import urlencode from allmydata.util.assertutil import precondition from allmydata import uri class AuthError(Exception): pass def unicode_to_utf8(uobj): assert precondition(isinstance(uobj, unicode)) return uobj.encode('utf-8') def post(url, args): argstr = urlencode(args) conn = urllib2.urlopen(url, argstr) return conn.read() def get_root_cap(url, user, passwd): args = { 'action': 'authenticate', 'email': unicode_to_utf8(user), 'passwd': unicode_to_utf8(passwd), } root_cap = post(url, args) if root_cap == '0': raise AuthError() elif not uri.is_uri(root_cap): raise ValueError('%r is not a URI' % (root_cap,)) else: return root_cap def get_introducer_furl(url): return post(url, { 'action': 'getintroducerfurl' }) def main(): URL = 'https://www-test.allmydata.com/native_client2.php' print get_introducer_furl(URL) print get_root_cap(URL, u'user', u'pass') if __name__ == '__main__': main()