summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormjtnix <mjtnix@5914aa95-5b3a-0410-a3b5-7b719e7fe9b2>2007-10-15 21:39:58 +0000
committermjtnix <mjtnix@5914aa95-5b3a-0410-a3b5-7b719e7fe9b2>2007-10-15 21:39:58 +0000
commit1a7d634b89b21f75269022e60e51e39146abeab5 (patch)
tree23a93625d1b0c684784e53c0724ef0b4cf6a7ced
parent79f7ded152e175fe69ba0a8c3f26644c9653cd63 (diff)
allow the cookiejar to be passed in, so it can be persistent
across different commands if necessary. the trans() method now returns the response object as well. unfortunately the type of the response object depends on the underlying http library. git-svn-id: http://freebase-python.googlecode.com/svn/trunk@15 5914aa95-5b3a-0410-a3b5-7b719e7fe9b2
-rw-r--r--freebase/api/session.py28
1 files changed, 16 insertions, 12 deletions
diff --git a/freebase/api/session.py b/freebase/api/session.py
index 1810e44..13784ba 100644
--- a/freebase/api/session.py
+++ b/freebase/api/session.py
@@ -68,9 +68,6 @@ simplejson.JSONEncoder.key_separator = ':'
#delattr(simplejson.encoder.ESCAPE_DCT, '/')
def urlencode_weak(s):
- # hack to render JSON form arguments legible - generates invalid uris!
- #return urlquote(s, safe='{}[],"/:$')
-
return urlquote(s, safe=',/:$')
@@ -137,9 +134,9 @@ class HTTPMetawebSession(MetawebSession):
"""
# share cookies across sessions, so that different sessions can
# see each other's writes immediately.
- _cookies = cookielib.CookieJar()
+ _default_cookiejar = cookielib.CookieJar()
- def __init__(self, service_url, username=None, password=None, prev_session=None):
+ def __init__(self, service_url, username=None, password=None, prev_session=None, cookiejar=None):
"""
create a new MetawebSession for interacting with the Metaweb.
@@ -161,10 +158,18 @@ class HTTPMetawebSession(MetawebSession):
if prev_session:
self.service_url = prev.service_url
+ if cookiejar is not None:
+ self.cookiejar = cookiejar
+ elif prev_session:
+ self.cookiejar = prev_session.cookiejar
+ else:
+ self.cookiejar = self._default_cookiejar
+
+
if CookiefulHttp is not None:
- self.httpclient = CookiefulHttp(cookiejar=self._cookies)
+ self.httpclient = CookiefulHttp(cookiejar=self.cookiejar)
else:
- cookiespy = urllib2.HTTPCookieProcessor(self._cookies)
+ cookiespy = urllib2.HTTPCookieProcessor(self.cookiejar)
self.opener = urllib2.build_opener(cookiespy)
@@ -189,7 +194,7 @@ class HTTPMetawebSession(MetawebSession):
else:
assert 0, 'unknown method %s' % method
- log.debug('HTTPREQ: %s %s %s', service_path, method, self._cookies)
+ log.debug('HTTPREQ: %s %s %s', service_path, method, self.cookiejar)
url = self.service_url + service_path
@@ -349,7 +354,7 @@ class HTTPMetawebSession(MetawebSession):
raise MetawebError(u'%s %r' % (r.get('code',''), r.messages))
log.debug('LOGIN RESP: %r', r)
- log.debug('LOGIN COOKIES: %s', self._cookies)
+ log.debug('LOGIN COOKIES: %s', self.cookiejar)
def mqlreaditer(self, sq):
@@ -393,9 +398,8 @@ class HTTPMetawebSession(MetawebSession):
def trans(self, guid):
"""translate blob from guid """
url = '/api/trans/raw/' + urlquote(guid)
- resp = self._httpreq(url)
- content = resp.read()
- return content
+ resp, body = self._httpreq(url)
+ return body
def mqlwrite(self, sq):
"""do a mql write"""