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('.')