--- a/thirdparty/google_appengine/google/appengine/ext/remote_api/handler.py Sat Sep 05 14:04:24 2009 +0200
+++ b/thirdparty/google_appengine/google/appengine/ext/remote_api/handler.py Sun Sep 06 23:31:53 2009 +0200
@@ -48,7 +48,13 @@
from google.appengine.api import api_base_pb
from google.appengine.api import apiproxy_stub
from google.appengine.api import apiproxy_stub_map
+from google.appengine.api import datastore_errors
+from google.appengine.api import mail_service_pb
+from google.appengine.api import urlfetch_service_pb
from google.appengine.api import users
+from google.appengine.api.capabilities import capability_service_pb
+from google.appengine.api.images import images_service_pb
+from google.appengine.api.memcache import memcache_service_pb
from google.appengine.datastore import datastore_pb
from google.appengine.ext import webapp
from google.appengine.ext.remote_api import remote_api_pb
@@ -76,6 +82,10 @@
runquery_response = datastore_pb.QueryResult()
apiproxy_stub_map.MakeSyncCall('datastore_v3', 'RunQuery',
request, runquery_response)
+ if runquery_response.result_size() > 0:
+ response.CopyFrom(runquery_response)
+ return
+
next_request = datastore_pb.NextRequest()
next_request.mutable_cursor().CopyFrom(runquery_response.cursor())
next_request.set_count(request.limit())
@@ -154,18 +164,52 @@
SERVICE_PB_MAP = {
+ 'capability_service': {
+ 'IsEnabled': (capability_service_pb.IsEnabledRequest,
+ capability_service_pb.IsEnabledResponse),
+ },
'datastore_v3': {
- 'Get': (datastore_pb.GetRequest, datastore_pb.GetResponse),
- 'Put': (datastore_pb.PutRequest, datastore_pb.PutResponse),
- 'Delete': (datastore_pb.DeleteRequest, datastore_pb.DeleteResponse),
- 'Count': (datastore_pb.Query, api_base_pb.Integer64Proto),
+ 'Get': (datastore_pb.GetRequest, datastore_pb.GetResponse),
+ 'Put': (datastore_pb.PutRequest, datastore_pb.PutResponse),
+ 'Delete': (datastore_pb.DeleteRequest, datastore_pb.DeleteResponse),
+ 'Count': (datastore_pb.Query, api_base_pb.Integer64Proto),
'GetIndices': (api_base_pb.StringProto, datastore_pb.CompositeIndices),
},
+ 'images': {
+ 'Transform': (images_service_pb.ImagesTransformRequest,
+ images_service_pb.ImagesTransformResponse),
+ 'Composite': (images_service_pb.ImagesCompositeRequest,
+ images_service_pb.ImagesCompositeResponse),
+ 'Histogram': (images_service_pb.ImagesHistogramRequest,
+ images_service_pb.ImagesHistogramResponse),
+ },
+ 'mail': {
+ 'Send': (mail_service_pb.MailMessage, api_base_pb.VoidProto),
+ 'SendToAdmins': (mail_service_pb.MailMessage, api_base_pb.VoidProto),
+ },
+ 'memcache': {
+ 'Get': (memcache_service_pb.MemcacheGetRequest,
+ memcache_service_pb.MemcacheGetResponse),
+ 'Set': (memcache_service_pb.MemcacheSetRequest,
+ memcache_service_pb.MemcacheSetResponse),
+ 'Delete': (memcache_service_pb.MemcacheDeleteRequest,
+ memcache_service_pb.MemcacheDeleteResponse),
+ 'Increment': (memcache_service_pb.MemcacheIncrementRequest,
+ memcache_service_pb.MemcacheIncrementResponse),
+ 'FlushAll': (memcache_service_pb.MemcacheFlushRequest,
+ memcache_service_pb.MemcacheFlushResponse),
+ 'Stats': (memcache_service_pb.MemcacheStatsRequest,
+ memcache_service_pb.MemcacheStatsResponse),
+ },
'remote_datastore': {
- 'RunQuery': (datastore_pb.Query, datastore_pb.QueryResult),
+ 'RunQuery': (datastore_pb.Query, datastore_pb.QueryResult),
'Transaction': (remote_api_pb.TransactionRequest,
- datastore_pb.PutResponse),
- 'GetIDs': (remote_api_pb.PutRequest, datastore_pb.PutResponse),
+ datastore_pb.PutResponse),
+ 'GetIDs': (remote_api_pb.PutRequest, datastore_pb.PutResponse),
+ },
+ 'urlfetch': {
+ 'Fetch': (urlfetch_service_pb.URLFetchRequest,
+ urlfetch_service_pb.URLFetchResponse),
},
}
@@ -187,6 +231,7 @@
elif 'X-appcfg-api-version' not in self.request.headers:
self.response.set_status(403)
self.response.out.write("This request did not contain a necessary header")
+ self.response.headers['Content-Type'] = 'text/plain'
return False
return True
@@ -202,6 +247,7 @@
'rtok': rtok
}
+ self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write(yaml.dump(app_info))
def post(self):
@@ -221,6 +267,10 @@
logging.exception('Exception while handling %s', request)
self.response.set_status(200)
response.mutable_exception().set_contents(pickle.dumps(e))
+ if isinstance(e, datastore_errors.Error):
+ application_error = response.mutable_application_error()
+ application_error.setCode(e.application_error)
+ application_error.setDetail(e.error_detail)
self.response.out.write(response.Encode())
def ExecuteRequest(self, request):