view.py 1.02 KB
from logging import getLogger
from pyramid_rpc.jsonrpc import jsonrpc_method
from iso8583_web.common import BaseIsoView
from iso8583_web.iso8583.tools import iso_to_dict


ROUTE = 'rpc'


class TestView(BaseIsoView):
    def get_iso_conf_name(self):  # Override
        # Sesuai file pyramid-bank.ini section [host_pemda]
        return 'pemda'

    @jsonrpc_method(endpoint=ROUTE)
    def echo(self, p: dict):
        log = getLogger()
        self.validate()
        ip = self.request.client_addr
        log.info(f"Request from {ip} echo {p}")
        conn = self.get_connection()
        iso_req = conn.job.echo_request()
        stan = iso_req.get_stan()
        iso_resp = self.send_iso(conn, iso_req)
        data = iso_to_dict(iso_resp)
        data['stan'] = data.get('11', stan)
        r = dict(code=0, message='OK', data=data)
        log.info(f"Response to {ip} echo {r}")
        return r


def includeme(config):
    log = getLogger()
    config.add_jsonrpc_endpoint(ROUTE, '/rpc')
    log.info(f"JSON-RPC /rpc")
    config.scan('.')