Compare View
Commits (3)
Changes
Showing 2 changed files Inline Diff
package.json
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 |
resend-delay.js
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 |