Пример #1
0
    def __init__(self, conf_file=None, *args, **kwargs):
        here = dirname(dirname(sys.argv[0]))
        self.config = Config.load(path=conf_file,
                                  conf_name="impim_api.conf",
                                  lookup_paths=[
                                      here,
                                      os.curdir,
                                      expanduser('~'),
                                      '/etc/',
                                      dirname(__file__),
                                  ])

        rest_api = TornadoRESTful(version='',
                                  base_url=self.config.APPLICATION_URL,
                                  discovery=True,
                                  cross_origin_enabled=True)
        rest_api.add_resource('alpha/images', ImagesResourceHandler)

        handlers = [
            (r'/healthcheck(?:/|\.html)?', HealthCheckHandler),
            (r'/thumbor_urls/?', JsonpEnabledThumborUrlHandler),
            (r'/alpha/images/(?P<key>.+)/.+', ImageHandler),
        ] + rest_api.get_url_mapping()

        super(ImagesApplication, self).__init__(
            handlers,
            thumbor_security_key=self.config.THUMBOR_SECURITY_KEY,
            thumbor_server_url=self.config.THUMBOR_SERVER_URL,
            *args,
            **kwargs)
Пример #2
0
 def test_basic_info_about_api(self):
     api = TornadoRESTful(
             version='v1', base_url='http://api.images.globo.com')
     my_api = api.get_spec()
     assert isinstance(my_api, APISpecification)
     assert my_api.version == 'v1'
     assert my_api.base_url == 'http://api.images.globo.com'
     assert my_api.complete_url == 'http://api.images.globo.com/v1'
     assert my_api.resources == []
Пример #3
0
    def test_spec_with_optional_param(self):

        class HalfImplementedResource(ResourceHandler):

            @validate(querystring={optional('host'): unicode})
            def get_collection(self, *args, **kwargs):
                pass

        self.api = TornadoRESTful(
                version='v1', base_url='http://api.images.globo.com')
        self.api.add_resource('comments', HalfImplementedResource)
        my_api = self.api.get_spec()
        resource = my_api.resources[0]
        param = resource.paths[0].methods[0].params[0]
        assert param.required == False
Пример #4
0
    def test_complete_resource_mapping(self):
        self.api = TornadoRESTful(
                version='v1', base_url='http://api.images.globo.com')
        self.api.add_resource('comments', ResourceWithDocumentation)
        my_api = self.api.get_spec()
        resource = my_api.resources[0]

        assert resource.name == 'comments'
        assert len(resource.paths) == 4

        path_names = [p.name for p in resource.paths]

        assert '/comments' in path_names
        assert '/comments.{type}' in path_names
        assert '/comments/{key}' in path_names
        assert '/comments/{key}.{type}' in path_names

        method_names = {}
        param_names = {}
        for path in resource.paths:
            method_names[path.name] = [m.name for m in path.methods]
            param_names[path.name] = [p.name for p in path.params]

        assert len(method_names['/comments']) == 2
        assert 'GET' in method_names['/comments']
        assert 'POST' in method_names['/comments']

        assert len(method_names['/comments.{type}']) == 2
        assert 'GET' in method_names['/comments.{type}']
        assert 'POST' in method_names['/comments.{type}']
        assert len(list(param_names['/comments.{type}'])) == 1
        assert 'type' in param_names['/comments.{type}']

        assert len(method_names['/comments/{key}']) == 3
        assert 'GET' in method_names['/comments/{key}']
        assert 'PUT' in method_names['/comments/{key}']
        assert 'DELETE' in method_names['/comments/{key}']
        assert len(list(param_names['/comments/{key}'])) == 1
        assert 'key' in param_names['/comments/{key}']

        assert len(method_names['/comments/{key}.{type}']) == 3
        assert 'GET' in method_names['/comments/{key}.{type}']
        assert 'PUT' in method_names['/comments/{key}.{type}']
        assert 'DELETE' in method_names['/comments/{key}.{type}']
        assert len(list(param_names['/comments/{key}.{type}'])) == 2
        assert 'type' in param_names['/comments/{key}.{type}']
        assert 'key' in param_names['/comments/{key}.{type}']
Пример #5
0
    def test_spec_that_only_impl_create_model(self):

        class HalfImplementedResource(ResourceHandler):
            def create_model(self, *args, **kwargs):
                pass

        self.api = TornadoRESTful(
                version='v1', base_url='http://api.images.globo.com')
        self.api.add_resource('comments', HalfImplementedResource)
        my_api = self.api.get_spec()
        resource = my_api.resources[0]
        assert len(resource.paths) == 2
        assert resource.paths[0].name == '/comments'
        assert len(resource.paths[0].methods) == 1
        assert resource.paths[0].methods[0].name == 'POST'
        assert resource.paths[1].name == '/comments.{type}'
        assert len(resource.paths[1].methods) == 1
        assert resource.paths[1].methods[0].name == 'POST'
Пример #6
0
    def test_spec_that_only_impl_get_collection(self):

        class HalfImplementedResource(ResourceHandler):
            def get_collection(self, callback):
                callback([])

        self.api = TornadoRESTful(
                version='v1', base_url='http://api.images.globo.com')
        self.api.add_resource('comments', HalfImplementedResource)
        my_api = self.api.get_spec()
        resource = my_api.resources[0]
        assert resource.name == 'comments'
        assert len(resource.paths) == 2
        assert resource.paths[0].name == '/comments'
        assert len(resource.paths[0].methods) == 1
        assert resource.paths[0].methods[0].name == 'GET'
        assert resource.paths[1].name == '/comments.{type}'
        assert len(resource.paths[1].methods) == 1
        assert resource.paths[1].methods[0].name == 'GET'
Пример #7
0
    def test_spec_with_params(self):

        class HalfImplementedResource(ResourceHandler):

            @validate(querystring={'host': unicode})
            def get_collection(self, *args, **kwargs):
                pass

        self.api = TornadoRESTful(
                version='v1', base_url='http://api.images.globo.com')
        self.api.add_resource('comments', HalfImplementedResource)
        my_api = self.api.get_spec()
        resource = my_api.resources[0]
        assert resource.paths[0].methods[0].name == 'GET'
        assert len(resource.paths[0].methods[0].params) == 1
        param = resource.paths[0].methods[0].params[0]
        assert isinstance(param, Param)
        assert param.name == 'host'
        assert param.description == ''
        assert param.style == 'querystring'
Пример #8
0
 def setUp(self):
     self.api = TornadoRESTful()
Пример #9
0
 def get_app(self):
     api = TornadoRESTful(version='v1', base_url='http://api.tapioca.com')
     api.add_resource('api', FullTestHandler)
     application = tornado.web.Application(api.get_url_mapping())
     return application
Пример #10
0
#!/usr/local/bin/python2.7
# encoding: utf-8

import tornado.ioloop
import tornado.web

from tapioca import TornadoRESTful, ResourceHandler


class HelloResource(ResourceHandler):
    def get_collection(self, callback):
        callback("Hello, world!")


api = TornadoRESTful(discovery=True)
api.add_resource('hello', HelloResource)
application = tornado.web.Application(api.get_url_mapping())

if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()
Пример #11
0
 def get_app(self):
     api = TornadoRESTful()
     api.add_resource('api', ResourceHandler)
     application = tornado.web.Application(api.get_url_mapping())
     return application
Пример #12
0
 def get_app(self):
     api = TornadoRESTful(cross_origin_enabled=True)
     api.add_resource('api', WithDefaultCallbackHandler)
     application = tornado.web.Application(api.get_url_mapping())
     return application
Пример #13
0
 def get_app(self):
     api = TornadoRESTful(version='v1',
                          base_url='http://api.tapioca.com',
                          discovery=True)
     api.add_resource('comments', ResourceWithDocumentation)
     return tornado.web.Application(api.get_url_mapping())
Пример #14
0
 def get_app(self):
     api = TornadoRESTful()
     api.add_resource('always_valid', NoAccessValuesInQuerystring)
     application = tornado.web.Application(api.get_url_mapping())
     return application
Пример #15
0
 def get_app(self):
     api = TornadoRESTful()
     api.add_resource('projects', ProjectsResource)
     application = tornado.web.Application(api.get_url_mapping())
     return application