Metadata-Version: 2.0
Name: aiojsonrpc2
Version: 1.0.0
Summary: Python3 asyncio JSONRPC module
Home-page: https://github.com/wetblanketcc/aiojsonrpc2
Author: wetblanketcc
Author-email: 35851045+wetblanketcc@users.noreply.github.com
License: MIT
Description-Content-Type: UNKNOWN
Keywords: jsonrpc async asyncio aio json rpc
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: System :: Networking
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Requires-Python: >=3.5

**``aiojsonrpc2`` is a Python3 JSONRPC module built using ``asyncio``.**

-  Supports Python 3.5+ only (uses ``async``/``await`` syntax)
-  Plain socket transport (not JSONRPC over HTTP)
-  Supports secure TLS (ie. SSL) sockets

This is a new, fast, and modern JSONRPC module originally built to
support
```aiostratum_proxy`` <https://github.com/wetblanketcc/aiostratum_proxy>`__
(a next-gen, extensible cryptocurrency mining proxy). However, releasing
it as it’s own independent Python package made the most sense.

Installation
^^^^^^^^^^^^

There are currently no external dependencies required for
``aiojsonrpc2``, and installation is simple:

::

    pip install aiojsonrpc2

Usage
^^^^^

To use ``aiojsonrpc2`` and depending on your needs, you need to
implement either a client or server ‘protocol’. Both ``ClientProtocol``
and ``ServerProtocol`` let you handle bi-directional JSONRPC
communication.

All incoming JSONRPC requests infer a protocol instance method from the
JSONRPC ``method`` parameter. For example, if the ``method`` contains
``client.show_message``, then the protocol class implementation must
have an instance method called ``handle_client_show_message``:

::

    from aiojsonrpc2 import ClientProtocol, ServerProtocol

    class MyClientProtocol(ClientProtocol):
        # NOTE: the opposing connection (perhaps a server) would
        # have sent the `client.show_message` request;
        # bidirectional communication!
        def handle_client_show_message(self, connection, params, **kwargs):
            # assuming the message to show is `params[0]`
            print(params[0])

Note how all ``.`` (ie. full stops/periods) from the JSONRPC ``method``
parameter are replaced by ``_`` (ie. underscore).

Future Considerations
^^^^^^^^^^^^^^^^^^^^^

Community involvement is appreciated. `Code
review <https://github.com/wetblanketcc/aiojsonrpc2>`__, `pull requests
for bug fixes &
improvements <https://github.com/wetblanketcc/aiojsonrpc2/pulls>`__,
`reporting
issues <https://github.com/wetblanketcc/aiojsonrpc2/issues>`__,
spreading the word - all appreciated.

TODO:
'''''

-  tests
-  travis integration
-  handle `haproxy ``PROXY``
   protocol <http://www.haproxy.org/download/1.8/doc/proxy-protocol.txt>`__


