Genieacs: config_ext_portax.js

File config_ext_portax.js, 3.0 KB (added by mirek@…, 4 years ago)

config/ext/portax.js

Line 
1const API_URL = 'http://127.0.0.1/genieacs';
2const qs = require('querystring');
3const url = require("url");
4const http = require(API_URL.split(":", 1)[0]);
5const logger = require('../../lib/logger');
6
7function portaxCallback(args, callback) {
8
9 let params = JSON.parse(args[0]);
10
11 const uri = API_URL;
12
13 let postData = qs.stringify(params);
14
15 let options = url.parse(uri);
16
17 options.method = "POST";
18 options.headers = {
19 "Accept": 'application/json',
20 "Content-Type": 'application/x-www-form-urlencoded',
21 "Content-Length": Buffer.byteLength(postData)
22 };
23
24 logger.info({message: 'post callback ' + params.id});
25
26 let request = http.request(options, function (response) {
27
28 if (response.statusCode == 404) {
29 return callback(null, null);
30 }
31
32 if (response.statusCode >= 400) {
33 return callback(new Error("Unexpected error. Response Code: " +
34 response.statusCode + '. Status Message: ' + response.statusMessage + '. t: ' + typeof response.statusCode));
35 }
36
37 let data = "";
38
39 response.on("data", function(d) {
40 data = data + d.toString();
41 });
42
43 response.on("end", function () {
44 logger.info({message: 'post callback response: ' + data});
45 return callback(null,data);
46 });
47
48 });
49
50 request.on("error", function (err) {
51 logger.info({message: 'post callback error: ' + err});
52 request.abort();
53 return callback(err);
54 });
55
56 request.on("socket", function(socket) {
57 socket.setTimeout(5000);
58 return socket.on('timeout', function() {
59 logger.info({message: 'socket timeout'});
60 request.abort();
61 });
62 });
63
64 request.write(postData);
65 request.end();
66
67}
68
69function portaxGetConfig(args, callback) {
70
71 if( null == args) {
72 return callback(new Error('undefined arguments'));
73 }
74
75 let genieacsId = args[0];
76
77 logger.info({message: 'Fetch config', id: genieacsId});
78
79 const uri = API_URL + "?id=" + genieacsId;
80
81 let options = url.parse(uri);
82 options.headers = { accept: 'application/json', "content-type": 'application/json' };
83
84 let request = http.get(options, function (response) {
85 if (response.statusCode == 404) {
86 return callback(null, null);
87 }
88
89 if (response.statusCode >= 400) {
90 return callback(new Error("Unexpected error. Response Code: " +
91 response.statusCode + '. Status Message: ' + response.statusMessage + '. t: ' + typeof response.statusCode));
92 }
93
94 let data = "";
95
96 response.on("data", function(d) {
97 data = data + d.toString();
98 });
99
100 response.on("end", function () {
101 if(data == "") {
102 return callback(null,null);
103 }
104 logger.info({message: 'Config fetched', id: genieacsId, data: data});
105 let result = JSON.parse(data);
106 return callback(null,result);
107 });
108
109 });
110
111 request.on("socket", function(socket) {
112 socket.setTimeout(5000);
113 return socket.on('timeout', function() {
114 logger.info({message: 'socket timeout'});
115 request.abort();
116 });
117 });
118
119 request.on("error", function (err) {
120 logger.info({message: 'get config error: ' + err});
121 request.abort();
122 return callback(err);
123 });
124
125}
126
127exports.portaxCallback = portaxCallback;
128exports.portaxGetConfig = portaxGetConfig;
129