def app(APIs): class Documentation(handler): @json def get(self): api_docs = [] for API in APIs: doc = API().getDocs() if doc: api_docs.append(doc) self.success(api_docs) class Version(handler): def get(self): self.success(settings["version"]) class Kinds(handler): def get(self): arr = [] for k in Kind.all(): if k.kind_name.find('_Ah') != 0: arr.append(k.kind_name) self.success(arr) class CatchAll(request.handler): def main(self): if self.request.path[-1:] != "/": self.full_redirect(self.request.path + "/") else: self.response.set_status(501) def post(self, *args): return self.main(*args) def put(self, *args): return self.main(*args) def delete(self, *args): return self.main(*args) def head(self, *args): return self.main(*args) def trace(self, *args): return self.main(*args) def options(self, *args): return self.main(*args) bindings = [ ('/api/', Documentation), ('/api/version/', Version), ('/api/kinds/', Kinds) ] for API in APIs: for binding in API().getMappings(): bindings.append(binding) bindings.append(('/api/.*', CatchAll)) return request.app(bindings)
# -*- coding: utf-8 -*- from gaext.utils import request # -------------------------------------------------------------------------- # # # default app # # -------------------------------------------------------------------------- # app = request.app([('.*', request.handler)])