Metadata-Version: 2.1
Name: tornado-rest-swagger
Version: 1.1.2
Summary: Swagger API Documentation builder for tornado server
Home-page: https://github.com/Cluas/tornado-rest-swagger
Author: Cluas Alex
Author-email: Cluas@live.cn
License: MIT License
Download-URL: https://pypi.org/project/tornado-rest-swagger/#files
Description: tornado-rest-swagger
        ===============
        
        [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FCluas%2Ftornado-rest-swagger.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2FCluas%2Ftornado-rest-swagger?ref=badge_shield)
        ![GitHub](https://img.shields.io/github/license/Cluas/tornado-rest-swagger.svg)
        
        
        | PyPI                                        |
        |----------------------------------------------|
        | [![PyPI][pypi_image]][pypi_link] |
        
        
        [pypi_link]: https://pypi.org/project/tornado-rest-swagger/
        [pypi_image]: https://img.shields.io/pypi/v/tornado-rest-swagger.svg
        
        
        
        
        
        | Linux                                        | Windows                                      |
        |----------------------------------------------|----------------------------------------------|
        | [![TravisCI][travisci_image]][travisci_link] | [![AppVeyor][appveyor_image]][appveyor_link] |
        
        [travisci_link]: https://travis-ci.org/Cluas/tornado-rest-swagger
        [travisci_image]: https://travis-ci.org/Cluas/tornado-rest-swagger.svg?branch=master
        
        [appveyor_link]: https://ci.appveyor.com/project/Cluas/tornado-rest-swagger/branch/master
        [appveyor_image]: https://ci.appveyor.com/api/projects/status/kp5w5tdi3ae0mpas?svg=true
        
        *tornado-rest-swagger: Swagger API Documentation builder for tornado server. Inspired by [aiohttp-swagger](https://github.com/cr0hn/aiohttp-swagger) package (based on this package sources).*
        
        Documentation |  https://github.com/Cluas/tornado-rest-swagger/wiki
        ------------- | -------------------------------------------------
        Code | https://github.com/Cluas/tornado-rest-swagger
        Issues | https://github.com/Cluas/tornado-rest-swagger/issues
        Python version | python2.7 and Python 3.4 and above
        Swagger Language Specification | https://swagger.io/specification
        
        Installation
        ----------------------
        
            pip install -U tornado-rest-swagger
        
        
        What's tornado-rest-swagger
        ----------------------
        
        tornado-rest-swagger is a plugin for tornado server that allow to document APIs using Swagger show the Swagger-ui console.
        
        ![](https://github.com/Cluas/tornado-rest-swagger/blob/master/docs/wiki__swagger_single_endpoint.png)
        
        ```python
        import tornado.ioloop
        import tornado.options
        import tornado.web
        
        from tornado_swagger.model import register_swagger_model
        from tornado_swagger.setup import setup_swagger
        
        
        class PostsHandler(tornado.web.RequestHandler):
            def get(self):
                """
                ---
                tags:
                  - Posts
                summary: List posts
                description: List all posts in feed
                operationId: getPost
                responses:
                    '200':
                      description: A list of users
                      content:
                        application/json:
                          schema:
                            $ref: '#/components/schemas/ArrayOfPostModel'
                        application/xml:
                          schema:
                            $ref: '#/components/schemas/ArrayOfPostModel'
                        text/plain:
                          schema:
                            type: string
                """
        
            def post(self):
                """
                ---
                tags:
                  - Posts
                summary: Add a new Post to the blog
                operationId: addPost
                requestBody:
                  description: Post object that needs to be added to the blog
                  content:
                    application/json:
                      schema:
                        $ref: '#/components/schemas/PostModel'
                    application/xml:
                      schema:
                        $ref: '#/components/schemas/PostModel'
                  required: true
                responses:
                  '405':
                    description: Invalid input
                    content: {}
                security:
                  - petstore_auth:
                      - 'write:pets'
                      - 'read:pets'
                """
        
        
        class PostsDetailsHandler(tornado.web.RequestHandler):
            def get(self, posts_id):
                """
                ---
                tags:
                  - Posts
                summary: Find Post by ID
                description: Returns a single post
                operationId: getPostById
                parameters:
                  - name: post_id
                    in: path
                    description: ID of post to return
                    required: true
                    schema:
                      type: integer
                      format: int64
                responses:
                  '200':
                    description: successful operation
                    content:
                      application/xml:
                        schema:
                          $ref: '#/components/schemas/PostModel'
                      application/json:
                        schema:
                          $ref: '#/components/schemas/PostModel'
                  '400':
                    description: Invalid ID supplied
                    content: {}
                  '404':
                    description: Pet not found
                    content: {}
                security:
                  - api_key: []
                """
        
            def patch(self, posts_id):
                """
                ---
                tags:
                  - Posts
                summary: Find Post by ID
                description: Returns a single post
                operationId: getPostById
                parameters:
                  - name: post_id
                    in: path
                    description: ID of post to return
                    required: true
                    schema:
                      type: integer
                      format: int64
                requestBody:
                  description: Post object that needs to be added to the blog
                  content:
                    application/json:
                      schema:
                        $ref: '#/components/schemas/PostModel'
                    application/xml:
                      schema:
                        $ref: '#/components/schemas/PostModel'
                  required: true
                responses:
                  '400':
                    description: Invalid ID supplied
                    content: {}
                  '404':
                    description: Pet not found
                    content: {}
                security:
                  - api_key: []
                """
        
            def delete(self, posts_id):
                """
                ---
                tags:
                  - Posts
                summary: Delete Post by ID
                description: Returns a single post
                operationId: getPostById
                parameters:
                  - name: post_id
                    in: path
                    description: ID of post to return
                    required: true
                    schema:
                      type: integer
                      format: int64
                responses:
                  '200':
                    description: successful operation
                    content:
                      application/json:
                        schema:
                          type: object
                          description: Post model representation
                          properties:
                            id:
                              type: integer
                              format: int64
                            title:
                              type: string
                            text:
                              type: string
                            is_visible:
                              type: boolean
                              default: true
                  '400':
                    description: Invalid ID supplied
                    content: {}
                  '404':
                    description: Pet not found
                    content: {}
                """
        
        
        @register_swagger_model
        class PostModel:
            """
            ---
            type: object
            description: Post model representation
            properties:
                id:
                    type: integer
                    format: int64
                title:
                    type: string
                text:
                    type: string
                is_visible:
                    type: boolean
                    default: true
            """
        
        
        @register_swagger_model
        class ArrayOfPostModel:
            """
            ---
            type: array
            description: Array of Post model representation
            items:
                $ref: '#/components/schemas/PostModel'
            """
        
        
        class Application(tornado.web.Application):
            _routes = [
                tornado.web.url(r'/api/posts', PostsHandler),
                tornado.web.url(r'/api/posts/(\w+)', PostsDetailsHandler),
            ]
        
            def __init__(self):
                settings = {
                    'debug': True
                }
        
                setup_swagger(self._routes,
                              swagger_url='/doc',
                              api_base_url='/',
                              description='',
                              api_version='1.0.0',
                              title='Journal API',
                              contact='name@domain',
                              schemes=['https'],
                              security_schemes ={
                                  'ApiKeyAuth': {
                                      'type': 'apiKey',
                                      'in': 'header',
                                      'name': 'X-API-Key'
                                  }
                              })
                super(Application, self).__init__(self._routes, **settings)
        
        
        if __name__ == '__main__':
            tornado.options.define('port', default='8080', help='Port to listen on')
            tornado.options.parse_command_line()
        
            app = Application()
            app.listen(port=8080)
        
            tornado.ioloop.IOLoop.current().start()
        
        ```
        
        ### Version 1.1.2
        
        - Support OpenAPI 3.0 Authentication
        
        ### Version 1.1.1
        
        - First version released
        
        
        ## License
        [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FCluas%2Ftornado-rest-swagger.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2FCluas%2Ftornado-rest-swagger?ref=badge_shield)
        
Platform: UNKNOWN
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Description-Content-Type: text/markdown
