Compare View

switch
from
...
to
 
Commits (3)

Changes

Showing 2 changed files Inline Diff

1 { 1 {
2 "name": "komodo-sdk", 2 "name": "komodo-sdk",
3 "version": "1.4.15", 3 "version": "1.5.0",
4 "description": "SDK for Komodo", 4 "description": "SDK for Komodo",
5 "main": "index.js", 5 "main": "index.js",
6 "scripts": { 6 "scripts": {
7 "test": "mocha", 7 "test": "mocha",
8 "postversion": "git push && git push --tags" 8 "postversion": "git push && git push --tags"
9 }, 9 },
10 "repository": { 10 "repository": {
11 "type": "git", 11 "type": "git",
12 "url": "git@gitlab.kodesumber.com:komodo/komodo-sdk.git" 12 "url": "git@gitlab.kodesumber.com:komodo/komodo-sdk.git"
13 }, 13 },
14 "keywords": [ 14 "keywords": [
15 "ppob", 15 "ppob",
16 "payment", 16 "payment",
17 "komodo" 17 "komodo"
18 ], 18 ],
19 "author": "Adhidarma Hadiwinoto <gua@adhisimon.org>", 19 "author": "Adhidarma Hadiwinoto <gua@adhisimon.org>",
20 "license": "ISC", 20 "license": "ISC",
21 "dependencies": { 21 "dependencies": {
22 "lru-cache": "^4.1.1",
22 "lru-cache": "^4.1.1", 23 "request": "^2.81.0",
23 "request": "^2.81.0", 24 "strftime": "^0.10.0",
24 "strftime": "^0.10.0", 25 "winston": "^2.3.1",
25 "winston": "^2.3.1", 26 "winston-daily-rotate-file": "^1.4.6"
26 "winston-daily-rotate-file": "^1.4.6" 27 }
27 } 28 }
28 } 29
File was created 1 "use strict";
2
3 var LRU = require('lru-cache');
4
5 const config = require('../config');
6 const logger = require('../logger');
7
8 var topupRequest;
9 var resendHandlers = LRU({max: 2000, maxAge: 1000 * 3600 * 36});
10
11 function init(options) {
12 if (options && options.request) {
13 request = options.request;
14 } else {
15 logger.warn('Undefined options.request, terminating....');
16 process.exit(1);
17 }
18 }
19
20 function cancel(task) {
21 var requestId;
22 if (typeof task === 'string') {
23 requestId = task;
24 } else {
25 requestId = task.requestId;
26 }
27
28 if (!requestId) {
29 return;
30 }
31
32 var oldHandler = resendHandlers.get(requestId);
33 if (!oldHandler) {
34 return;
35 }
36
37 logger.verbose('Canceling resend delay', {task: oldHandler.task});
38
39 try {
40 if (oldHandler.handler) {
41 clearTimeout(oldHandler.handler);
42 }
43 }
44 catch(e) {};
45
46 try {
47 resendHandlers.del(requestId);
48 }
49 catch(e) {};
50 }
51
52 function register(task) {
53 if (!task.requestId) {
54 logger.warn('Invalid task on resendDelay')
55 return;
56 }
57
58 if (!config || !config.globals || !Number(config.globals.auto_resend_delay_secs) || !Number(config.globals.auto_resend_delay_max)) {
59 return;
60 }
61
62 var retry = config.globals.auto_resend_delay_max;
63 var oldHandler = resendHandlers.get(task.requestId);
64 if (oldHandler) {
65 retry = oldHandler.retry - 1;
66 cancel(task);
67 }
68
69 if (retry <= 0) {
70 logger.verbose('Resend delay retry exceeded', {task: task});
71 cancel(task);
72 return;
73 }
74
75 logger.verbose('Registering resend delay task request', {task: task, delay: config.globals.auto_resend_delay_secs, retry: retry});
76 var handlerData = {
77 handler: setTimeout(request, config.globals.auto_resend_delay_secs * 1000, task),
78 task: task,
79 retry: retry
80 }
81
82 resendHandlers.set(task.requestId, handlerData);
83 }
84
85
86 exports.init = init;
87 exports.cancel = cancel;
88 exports.register = register;
1 "use strict"; 89