HTTP Client Mixin for Tornado RequestHandlers
Find a file
2017-04-26 22:29:13 -04:00
docs Remove print statement 2017-04-26 22:28:56 -04:00
requires Update the coverage pinning 2017-04-26 18:05:19 -04:00
sprockets Update default Accept to be the list of supported responses 2017-04-26 22:19:15 -04:00
.gitignore Base files 2017-04-26 17:49:58 -04:00
.travis.yml Initial version 2017-04-26 17:56:21 -04:00
LICENSE Base files 2017-04-26 17:49:58 -04:00
MANIFEST.in Base files 2017-04-26 17:49:58 -04:00
README.rst Update the example 2017-04-26 22:29:04 -04:00
setup.cfg Initial version 2017-04-26 17:56:21 -04:00
setup.py Updates to the distribution 2017-04-26 22:29:13 -04:00
tests.py See if this fixes missing 429 in Python 2 2017-04-26 18:01:23 -04:00

sprockets.mixins.http
=====================
HTTP Client Mixin for Tornado RequestHandlers.

|Version| |Travis| |CodeCov| |Docs|

Installation
------------
``sprockets.mixins.http`` is available on the
`Python Package Index <https://pypi.python.org/pypi/sprockets.mixins.http>`_
and can be installed via ``pip`` or ``easy_install``:

.. code-block:: bash

   pip install sprockets.mixins.http

If you would like to use :class:`~tornado.curl_httpclient.CurlAsyncHTTPClient`,
you can install `pycurl <http://pycurl.io>`_ with:

.. code-block:: bash

   pip install sprockets.mixins.http[curl]

Documentation
-------------
https://pythonhosted.org/sprockets.mixins.http

Requirements
------------
- `tornado <https://tornadoweb.org>`_ >=4.2.0,<5

Example
-------

This examples demonstrates the most basic usage of ``sprockets.mixins.http``

.. code:: python

    from tornado import gen, ioloop, web
    from sprockets.mixins import http


    class RequestHandler(http.HTTPClientMixin, web.RequestHandler):

       @gen.coroutine
       def get(self, *args, **kwargs):
           response = yield self.http_fetch('https://api.github.com')
           if not response.ok:
               self.set_status(response.code)
           self.write(response.body)
           self.finish()


    if __name__ == "__main__":
       app = web.Application([web.url(r'/', RequestHandler)])
       app.listen(8000)
       ioloop.IOLoop.current().start()


As with Tornado, to use the curl client which has numerous benefits:

.. code:: python

    from tornado import gen, httpclient, ioloop, web
    from sprockets.mixins import http

    httpclient.AsyncHTTPClient.configure(
        'tornado.curl_httpclient.CurlAsyncHTTPClient')


    class RequestHandler(http.HTTPClientMixin, web.RequestHandler):

       @gen.coroutine
       def get(self, *args, **kwargs):
           response = yield self.http_fetch('https://api.github.com')
           if not response.ok:
               self.set_status(response.code)
           self.write(response.body)
           self.finish()


    if __name__ == "__main__":
       app = web.Application([web.url(r'/', RequestHandler)])
       app.listen(8000)
       ioloop.IOLoop.current().start()

License
-------
``sprockets.mixins.http`` is released under the `3-Clause BSD license <https://github.com/sprockets/sprockets.mixins.http/blob/master/LICENSE>`_.

.. |Version| image:: https://badge.fury.io/py/sprockets.mixins.http.svg?
   :target: http://badge.fury.io/py/sprockets.mixins.http

.. |Travis| image:: https://travis-ci.org/sprockets/sprockets.mixins.http.svg?branch=master
   :target: https://travis-ci.org/sprockets/sprockets.mixins.http

.. |CodeCov| image:: http://codecov.io/github/sprockets/sprockets.mixins.http/coverage.svg?branch=master
   :target: https://codecov.io/github/sprockets/sprockets.mixins.http?branch=master

.. |Docs| image:: https://img.shields.io/badge/docs-pythonhosted-green.svg
   :target: https://pythonhosted.com/sprockets.mixins.http