-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
89 lines (61 loc) · 1.79 KB
/
server.js
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
79
80
81
82
83
84
85
86
87
88
89
var express = require('express');
var bodyParser = require('body-parser');
var multer = require('multer');
var upload = multer({dest: 'uploads/'});
var app = express();
app.get('/', function(req,res){
res.send('working');
});
//get
app.get('/api/phonenumbers/parse/text/:phoneNumber', (req, res) => {
if(req.params.phoneNumber == 'empty') {
res.status(400).send([]);
}
else {
var arr = [];
arr.push(req.params.phoneNumber);
var finalArr = numParser(arr, res);
res.status(200).send(finalArr);
}
});
//post
app.post('/api/phonenumbers/parse/file', upload.single('file'), (req, res) => {
if(!req.file) {
res.status(400).send('No file received');
}
else {
var fs = require('fs');
var contents = fs.readFileSync(req.file.path);
var fileText = contents.toString('ascii');
var buf = Buffer.from(fileText, 'base64');
var numbers = buf.toString('ascii');
var numArr = numbers.split('\n');
var finalArr = numParser(numArr, res);
res.status(200).send(finalArr);
}
});
app.listen((process.env.PORT||8000), () => {
console.log('The server is running on port 8000');
});
// Numbers parser
function numParser(arr, res) {
var phoneUtil = require('google-libphonenumber').PhoneNumberUtil.getInstance();
var PNF = require('google-libphonenumber').PhoneNumberFormat;
try {
var tel;
var formattedArr = [];
for (var i = 0; i < arr.length; i++) {
tel = phoneUtil.parse(arr[i], 'CA');
formattedArr.push(phoneUtil.format(tel, PNF.INTERNATIONAL));
}
var uniqArr = uniq(formattedArr);
return uniqArr;
} catch(err) {
res.status(400).send("Exception caught: " + err);
}
}
// Returns an array of unique phone numbers
function uniq(a) {
return Array.from(new Set(a));
}
module.exports = app;