Beispiel #1
0
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)
Beispiel #2
0
# -*- coding: utf-8 -*-


from gaext.utils import request


# -------------------------------------------------------------------------- #
#
#       default app
#
# -------------------------------------------------------------------------- #


app = request.app([('.*', request.handler)])