jsonrpc.py
2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
from pyramid_rpc.jsonrpc import jsonrpc_method
from opensipkd.jsonrpc.exc import (
JsonRpcInvalidParams,
JsonRpcBankNotFound,
JsonRpcBillerNetwork,
)
from ..tools import iso_to_dict
from ..logger import log_web_info
from . import (
WebJob as BaseWebJob,
View as BaseView,
)
conf = dict()
class Webjob(BaseWebJob):
def timeout_error(self): # override
raise JsonRpcBillerNetwork(message='Timeout')
class View(BaseView):
def get_web_job_cls(self): # Override
return WebJob
def get_response(self, rpc_method, p=dict(), iso_method=None):
self.log_receive(rpc_method, p)
conn = self.get_connection()
iso_func = getattr(conn.job, iso_method or rpc_method)
iso_req = p and iso_func(p) or iso_func()
iso_resp = self.web_job(conn, iso_req)
data = iso_to_dict(iso_resp)
r = dict(code=0, message='OK', data=data)
self.log_send(r)
return r
def not_found_error(self, hostname): # Override
msg = 'Host {} tidak ditemukan di konfigurasi'.format(hostname)
return JsonRpcBankNotFound(message=msg)
def not_running_error(self, hostname): # Override
msg = 'Host {} belum terhubung'.format(hostname)
return JsonRpcBankNotFound(message=msg)
def log_receive(self, method, p):
msg = '{} {}'.format(method, p)
BaseView.log_receive(self, msg)
def log_send(self, p):
BaseView.log_send(self, p)
@jsonrpc_method(endpoint='rpc')
def echo(self, p):
return self.get_response('echo', 'echo_request')
@jsonrpc_method(endpoint='rpc')
def inquiry(self, p):
return self.get_response('inquiry', p)
@jsonrpc_method(endpoint='rpc')
def payment(self, p):
return self.get_response('payment', p)
@jsonrpc_method(endpoint='rpc')
def reversal(self, p):
return self.get_response('reversal', p)
# Dipanggil read_conf.py
def init(cfg):
conf.update(cfg)
# Dipanggil forwarder.py
def pyramid_init(config):
config.include('pyramid_rpc.jsonrpc')
config.add_jsonrpc_endpoint('rpc', conf['route_path'])