Pyogp Client Lib/Login Test Script
Jump to navigation
Jump to search
Eventlet httpc version
import os.path if os.path.exists("../setup_path.py"): execfile("../setup_path.py") import time from indra.base import llsd from eventlet import api, httpc, util util.wrap_socket_with_coroutine_socket() loginparams={'password' : 'pass', # md5-password '$1$' + md5hash 'lastname' : 'last', 'firstname' : 'first', } llsdloginparams = llsd.format_xml(loginparams) headers = {"content-type" : "application/llsd+xml"} try: response = httpc.post('https://login1.aditi.lindenlab.com/cgi-bin/auth.cgi', llsdloginparams, headers) loginurl = response.read() except httpc.Found, e: loginurl = e.location() print loginurl data = {'caps': {'place_avatar' : True}} data = llsd.format_xml(data) headers = {"content-type" : "application/llsd+xml"} response = httpc.post(loginurl, data, headers) request = response.read() print request
Urllib2 version
import os.path if os.path.exists("../setup_path.py"): execfile("../setup_path.py") import time from indra.base import llsd import urllib2 from eventlet import util util.wrap_socket_with_coroutine_socket() loginparams={'password' : 'pass', # md5-password '$1$' + md5hash 'lastname' : 'last', 'firstname' : 'first', } llsdloginparams = llsd.format_xml(loginparams) headers = {"content-type" : "application/llsd+xml"} request = urllib2.Request('https://login1.aditi.lindenlab.com/cgi-bin/auth.cgi', llsdloginparams, headers) # todo: handle non 302 cases! there's plenty, and lots are test cases # per the protocol, a successful authentication returns a 302 with the seedcap embedded in the headers class RedirectHandler(urllib2.HTTPRedirectHandler): def http_error_302(self, req, fp, code, msg, headers): #parse the redirect, grabbing the seed cap url from the headers if True: print '' print 'contents of response = ' print headers print msg print '' # per the protocol, the seedcap is in the 'location' in headers return headers['location'] # post to auth.cgi, ignoring the built in redirect opener = urllib2.build_opener(RedirectHandler()) try: seed_cap = opener.open(request) except urllib2.HTTPError, e: print 'HTTP Error: ', e.code except urllib2.URLError, e: print 'URL Error: ', e.reason print seed_cap data = {'caps': {'place_avatar' : True, 'event_queue' : True}} data = llsd.format_xml(data) headers = {"content-type" : "application/llsd+xml"} request = urllib2.Request(seed_cap, data, headers) response = urllib2.urlopen(request) request = response.read() print request