summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/freebase-images-appengine/index.html10
-rw-r--r--freebase/api/session.py30
-rwxr-xr-xtest/test_all.py29
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":