Skip to main content

Simple JSON-RPC service without transport layer

Project description

JSONRPCBase

NOTE: This is a fork of level12/jsonrpcbase with changes maintained by KBase

Simple JSON-RPC service without transport layer

This library is intended as an auxiliary library for easy an implementation of JSON-RPC services with Unix/TCP socket like transport protocols that do not have complex special requirements. You need to utilize some suitable transport protocol with this library to actually provide a working JSON-RPC service.

Features

  • Easy to use, small size, well tested.
  • Supports JSON-RPC v2.0. Compatible with v1.x style calls with the exception of v1.0 class-hinting.
  • Optional argument type validation that significantly eases development of jsonrpc method_data.

Example

Example usage:

import jsonrpcbase

chat_service = jsonrpcbase.JSONRPCService()

def login(username, password, timelimit=0):
    # (...)
    return True

def receive_message(**kwargs):
    # (...)
    return chat_message

def send_message(msg):
    # (...)
    pass

if __name__ == '__main__':

    # Adds the method login to the service as a 'login'.
    chat_service.add(login, types=[basestring, basestring, int])

    # Adds the method receive_message to the service as a 'recv_msg'.
    chat_service.add(receive_message, name='recv_msg', types={"msg": basestring, "id": int})

    # Adds the method send_message as a 'send_msg' to the service.
    chat_service.add(send_message, 'send_msg')

    # Receive a JSON-RPC call.
    jsonmsg = my_socket.recv()

    # Process the JSON-RPC call.
    result = chat_service.call(jsonmsg)

    # Send back results.
    my_socket.send(result)

Development

Install poetry and run poetry install.

Run tests with make test.

Deploy with poetry build and poetry publish.

Credits

This project was originally developed by Juhani Åhman.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kbase_jsonrpcbase-0.3.0a6.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kbase_jsonrpcbase-0.3.0a6-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file kbase_jsonrpcbase-0.3.0a6.tar.gz.

File metadata

  • Download URL: kbase_jsonrpcbase-0.3.0a6.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.3 CPython/3.7.3 Linux/5.4.0-42-generic

File hashes

Hashes for kbase_jsonrpcbase-0.3.0a6.tar.gz
Algorithm Hash digest
SHA256 ad17753b3ff8bcaf2f686495387a4ff8c7d3bc2f268ce5a83afec48d1d57e690
MD5 9d1c4cb08f8866cdebf11400b5041c8e
BLAKE2b-256 6b7e9dd4649c07e71728d7a1d47a56ca96580ad38769e053c66624010c6838fd

See more details on using hashes here.

File details

Details for the file kbase_jsonrpcbase-0.3.0a6-py3-none-any.whl.

File metadata

  • Download URL: kbase_jsonrpcbase-0.3.0a6-py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.3 CPython/3.7.3 Linux/5.4.0-42-generic

File hashes

Hashes for kbase_jsonrpcbase-0.3.0a6-py3-none-any.whl
Algorithm Hash digest
SHA256 775e1f8dbc157521c528a1b0bfa63cdae733dc3e8dcf743654c175ebb24bb6df
MD5 42f6d93024db441a67bbdb67817e3173
BLAKE2b-256 a00160bdad388dea1555d1636b612ef2f4f3034a4389e6addac3b44ca89fd598

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page