Difference between revisions of "Pyogp Client Lib/Login Test Script"
Jump to navigation
Jump to search
(New page: <pre> 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_w...) |
|||
Line 1: | Line 1: | ||
=Eventlet httpc version= | |||
<pre> | <pre> | ||
import os.path | import os.path | ||
Line 36: | Line 37: | ||
</pre>--[ | </pre> | ||
=Urllib2 version= | |||
<pre> | |||
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' : 'gtaIV', # md5-password '$1$' + md5hash | |||
'lastname' : 'Tester', | |||
'firstname' : 'Locklainn', | |||
} | |||
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 | |||
</pre> |
Revision as of 12:46, 7 July 2008
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' : 'gtaIV', # md5-password '$1$' + md5hash 'lastname' : 'Tester', 'firstname' : 'Locklainn', } 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' : 'gtaIV', # md5-password '$1$' + md5hash 'lastname' : 'Tester', 'firstname' : 'Locklainn', } 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