diff options
| author | alecflett <alecflett@5914aa95-5b3a-0410-a3b5-7b719e7fe9b2> | 2010-05-11 23:38:41 +0000 |
|---|---|---|
| committer | alecflett <alecflett@5914aa95-5b3a-0410-a3b5-7b719e7fe9b2> | 2010-05-11 23:38:41 +0000 |
| commit | 45e0c82620a1cd082b394130e7b1186e8bf43c2c (patch) | |
| tree | 3b606ce4d49c4d76930759aaa6ec58abd801ebe9 | |
| parent | 51b797b8aaebb976499a324b16c404e08590cd46 (diff) | |
add support for arbitrary envelope parameters, and allow users to override the escape mechanism too
git-svn-id: http://freebase-python.googlecode.com/svn/trunk@245 5914aa95-5b3a-0410-a3b5-7b719e7fe9b2
| -rw-r--r-- | freebase/api/session.py | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/freebase/api/session.py b/freebase/api/session.py index 7801e4c..24224f8 100644 --- a/freebase/api/session.py +++ b/freebase/api/session.py @@ -574,7 +574,7 @@ class HTTPMetawebSession(MetawebSession): return self._httpreq_json(service, 'POST', form=form) - def mqlreaditer(self, sq, asof=None, headers=None): + def mqlreaditer(self, sq, asof=None, headers=None, escape=False, **envelope): """read a structure query.""" cursor = True @@ -586,7 +586,8 @@ class HTTPMetawebSession(MetawebSession): sq = sq[0] while 1: - subq = dict(query=[sq], cursor=cursor, escape=False) + subq = envelope.copy() + subq.update(query=[sq], cursor=cursor, escape=escape) if asof: subq['as_of_time'] = asof @@ -603,33 +604,38 @@ class HTTPMetawebSession(MetawebSession): else: return - def mqlread(self, sq, asof=None, headers=None): + def mqlread(self, sq, asof=None, headers=None, escape=False, **envelope): """read a structure query. For a more complete description, see http://www.freebase.com/view/en/api_service_mqlread""" - subq = dict(query=sq, escape=False) + subq = envelope.copy() + subq.update(query=sq, escape=escape) if asof: subq['as_of_time'] = asof if isinstance(sq, list): subq['cursor'] = True + service = '/api/service/mqlread' - + self.log.info('%s: %s', service, Delayed(logformat, sq)) qstr = json.dumps(subq, separators=SEPARATORS) + print "sending %s" % qstr r = self._httpreq_json(service, 'POST', form=dict(query=qstr), headers=headers) return self._mqlresult(r) - def mqlreadmulti(self, queries, asof=None, headers=None): + def mqlreadmulti(self, queries, asof=None, headers=None, + escape=False, **envelope): """read a structure query""" keys = [('q%d' % i) for i,v in enumerate(queries)]; envelope = {} for i,sq in enumerate(queries): - subq = dict(query=sq, escape=False) + subq = envelope.copy() + subq.update(query=sq, escape=escape) if asof: subq['as_of_time'] = asof @@ -718,13 +724,12 @@ class HTTPMetawebSession(MetawebSession): return body - def mqlwrite(self, sq, use_permission_of=None, attribution_id=None): + def mqlwrite(self, sq, attribution_id=None, **envelope): """do a mql write. For a more complete description, see http://www.freebase.com/view/en/api_service_mqlwrite""" - query = dict(query=sq, escape=False) - if use_permission_of: - query['use_permission_of'] = use_permission_of - if attribution_id: + query = envelope.copy() + query.update(query=sq, escape=False) + if attribution_id: # strange badly named api query['attribution'] = attribution_id qstr = json.dumps(query, separators=SEPARATORS) @@ -743,11 +748,12 @@ class HTTPMetawebSession(MetawebSession): self.log.debug('MQLWRITE RESP: %r', r) return self._mqlresult(r) - def mqlcheck(self, sq): + def mqlcheck(self, sq, escape=False, **envelope): """ See if a write is valid, and see what would happen, but do not actually do the write """ - query = dict(query=sq, escape=False) + query = envelope.copy() + query.update(query=sq, escape=escape) qstr = json.dumps(query, separators=SEPARATORS) self.log.debug('MQLCHECK: %s', qstr) |
