diff options
| author | nitromaster101 <nitromaster101@5914aa95-5b3a-0410-a3b5-7b719e7fe9b2> | 2009-06-26 00:36:37 +0000 |
|---|---|---|
| committer | nitromaster101 <nitromaster101@5914aa95-5b3a-0410-a3b5-7b719e7fe9b2> | 2009-06-26 00:36:37 +0000 |
| commit | a0295569d23ef0b1e9a836fbe8e452b094e98e3f (patch) | |
| tree | 8a31307d9989f30c367756255f7bcebae3783c0c | |
| parent | ef8f4ee03ba58818d5d26ca69cb8dbc33720d5bd (diff) | |
added create/delete private domain, safeguard against superlong get queries
git-svn-id: http://freebase-python.googlecode.com/svn/trunk@142 5914aa95-5b3a-0410-a3b5-7b719e7fe9b2
| -rw-r--r-- | examples/freebase-images-appengine/index.html | 10 | ||||
| -rw-r--r-- | freebase/api/session.py | 30 | ||||
| -rwxr-xr-x | test/test_all.py | 29 |
3 files changed, 63 insertions, 6 deletions
diff --git a/examples/freebase-images-appengine/index.html b/examples/freebase-images-appengine/index.html index 95a044e..6906d3b 100644 --- a/examples/freebase-images-appengine/index.html +++ b/examples/freebase-images-appengine/index.html @@ -1,8 +1,9 @@ -<head> +<html> + <head> <title>Freebase Images</title> <link type="text/css" rel="stylesheet" href="/css/freebase-controls.css"> <link type="text/css" rel="stylesheet" href="/css/main.css"> - + <script type="text/javascript" src="http://code.jquery.com/jquery-1.2.3.min.js"></script> <script type="text/javascript" src="/js/freebase.suggest.js"></script> <script type="text/javascript"> @@ -35,13 +36,12 @@ id = window.location.search.split("?id=")[1] update_freebase(); insert_images(id); - + } }); </script> -</head> + </head> -<html> <body> <div id="input"> <form> diff --git a/freebase/api/session.py b/freebase/api/session.py index 72622b8..770fa9c 100644 --- a/freebase/api/session.py +++ b/freebase/api/session.py @@ -39,7 +39,7 @@ declarations for external metaweb api. __all__ = ['MetawebError', 'MetawebSession', 'HTTPMetawebSession', 'attrdict'] -__version__ = '0.1' +__version__ = '0.5' import os, sys, re import cookielib @@ -324,6 +324,12 @@ class HTTPMetawebSession(MetawebSession): self.log.info('%s %s%s%s', method, url, formstr, headerstr) ####### + # just in case you decide to make SUPER ridiculous GET queries: + if len(url) > 1000 and method == "GET": + method = "POST" + url, body = url.split("?") + + return self._http_request(url, method, body, headers) def _raise_service_error(self, url, status, ctype, body): @@ -443,6 +449,28 @@ class HTTPMetawebSession(MetawebSession): except MetawebError, me: return False + + def create_private_domain(self, domain_key, display_name): + """ create a private domain. For a more complete description, + see http://www.freebase.com/edit/topic/en/api_service_create_private_domain""" + + service = "/api/service/create_private_domain" + + form = dict(domain_key=domain_key, display_name=display_name) + + r = self._httpreq_json(service, 'POST', form=form) + return r + + + def delete_private_domain(self, domain_key): + """ create a private domain. For a more complete description, + see http://www.freebase.com/edit/topic/en/api_service_delete_private_domain""" + + service = "/api/service/delete_private_domain" + + form = dict(domain_key=domain_key) + + return self._httpreq_json(service, 'POST', form=form) def mqlreaditer(self, sq, asof=None): """read a structure query.""" diff --git a/test/test_all.py b/test/test_all.py index 23a3577..b3802f6 100755 --- a/test/test_all.py +++ b/test/test_all.py @@ -115,6 +115,16 @@ class TestFreebase(unittest.TestCase): self.assertEqual( 'Sting', result['name']) self.assertEqual('#9202a8c04000641f8000000000092a01', result['guid'][0]['value']) + def test_ridiculously_long_write(self): + + q = [{ + "id":None, + "id|=":["/guid/9202a8c04000641f80000000000" + str(a) for a in range(10000,10320)] + }] + + self.assert_(len(str(q)), 1024) + self.assertNotEqual(len(freebase.mqlread(q)), 0) + def test_write(self): read_query = {'type':'/music/artist','name':'Yanni\'s Cousin Tom', 'id':{}} @@ -237,6 +247,25 @@ class TestFreebase(unittest.TestCase): self.assertNotEqual(len(r), 0) self.assertEqual(r["status"], u"200 OK") + + def test_private_domains(self): + freebase.sandbox.login(username=USERNAME, password=PASSWORD) + r = freebase.sandbox.create_private_domain("superfly" + str(int(random.random() * 1e10)), "Superfly!") + + q = {"id" : r["domain_id"], "*" : None} + info = freebase.sandbox.mqlread(q) + self.assertEqual(info["type"], ["/type/domain"]) + self.assertNotEqual(len(info["key"]), 0) + self.assertEqual(info["attribution"], info["creator"]) + + freebase.sandbox.delete_private_domain(info["key"][0]) + deleted = freebase.sandbox.mqlread(q) + self.assertEqual(len(deleted["key"]), 0) + self.assertEqual(len(deleted["type"]), 0) + self.assertEqual(deleted["name"], None) + self.assertEqual(deleted["creator"], info["attribution"]) + + if __name__ == '__main__': if USERNAME == "username" and PASSWORD == "password": |
