const express = require('express')
const app = express()
const bodyParser = require('body-parser')
const configPartnerList = require('./config_partner.json');
const PartnerManager = require('./req_partner_manager');
let moment = require('moment')
let unirest = require('unirest')
let request = require('request')
let cors = require('cors')
let toXML = require('jstoxml');
// var mongoose = require('mongoose');
// mongoose.connect('mongodb://10.1.2.146:27018/test');
// var MongoClient = require('mongodb').MongoClient;
// var dburl = "mongodb://10.1.2.144:27018/test";
// MongoClient.connect(dburl, function(err, db) {
// if (err) {
// throw err;
// }
// console.log('db connected');
// db.close();
// });
const port = 3002
app.use(cors())
app.use((req, res, next) => {
console.log('incomming url: ',req.originalUrl)
next()
})
app.post('/parse', bodyParser.text('*/*'), async (req, res) => {
console.log('test', req.body)
console.log('test', req.headers)
try {
JSON.parse(req.body)
} catch (e) {
}
res.send(result)
});
app.use(bodyParser.urlencoded());
app.use(bodyParser.json());
app.post('/apiRequest', (req, res) => {
console.log(req.params.apiRequest)
console.log(req.originalUrl);
console.log(req.url)
let partnerCode = req.body.partnerCode
let configPartner = null;
if (Array.isArray(configPartnerList.partner)) {
for (let partner of configPartnerList.partner) {
if (partnerCode == partner.partnerCode) {
configPartner = partner;
break;
}
}
}
if (configPartner) {
let reqPartner = new PartnerManager(req.body, configPartner);
let apiRequest = reqPartner.requestApi()
if (apiRequest instanceof Error) {
//handle error
res.send(JSON.parse(apiRequest.message))
} else {
res.send(apiRequest)
}
} else {
res.send('unknown partner')
}
})
app.post('/ktc/point/transferPoint', (req, res) => {
console.log('/ktc/point/transferPoint', req.body)
console.log('/ktc/point/transferPoint', req.headers)
let response = {
aaa: "test",
pushRefId1: 'WsxK21',
resultData: [
{
pointId1: 'ser'
},
{
pointId1: 'ser1'
}
]
}
res.set('xx', 'test')
// res.status(200).json(response)
})
app.post('/mockOneSiamMoblieServiceSoap', (req, res) => {
console.log(req.body)
console.log(req.headers)
res.status(200).send('123$value$value$value')
})
app.get('/get', (req, res) => {
console.log('get', req.body)
console.log('get', req.headers)
let response = {
pushRefId: '',
resultData: [
{
pointId1: 'ser'
},
{
pointId1: 'ser1'
}
]
}
// res.status(200).json(response)
});
app.get('/test', async (req, res) => {
console.log('test', req.body)
console.log('test', req.headers)
try {
let response = await doRequestFormData('http://test.us-payment.picovr.com/AISPayNotify',{ accept: 'application/json'}, {
app_id: '24e09f8038dbf1204c09090d56c872c0',
body: 'PICO-COINS12000',
buyer_pay_fee: 'Paid by user',
device_id: '90c73518a762a2d1a339d7f',
fee_type: 'THB',
mch_id: 'company_id',
nonce_str: 'SpXrgaKf4fagyF9a',
notify_type: 'PAY',
open_id: 'ZLsdZaanhHDAUkDDgRX6QfpxAj0CSx6x7BLgUt4LlpM=',
out_trade_no: '202004081609523',
pay_time: 1587527937951,
pay_type: 'AIS',
receipt_fee: '0.00',
subject: 'Purchased 12000 coins.',
terminal_type: 'IOS',
timestamp: 1587527937951,
total_fee: '0.00',
trade_no: '50609152601900018023',
trade_type: 'Download',
signature: '83387eaf92018538d5f8fd7f3a6ecd0a'
})
res.send(response)
} catch (e) {
//if doRequestFormData has error
//reject, timeout, other error
console.log('doRequestFormData', e)
res.send('error')
}
});
function doRequestFormData(url, headers, data) {
console.log(url, headers, data)
return new Promise(function (resolve, reject) {
request.post({ url: url, headers: headers, timeout: 2000, formData: data }, function (error, res, body) {
if (!error && res.statusCode == 200) {
resolve(body);
} else {
reject(error);
}
});
});
}
// app.post('/api/v1/mpay/billingonbehalf/reserveAndChargeVolume.json', (req, res) => {
// console.log(req.body)
// console.log(req.headers)
// let response = {
// "reserveAndChargeVolumeResponse": {
// "result": "SUCCESS",
// "resultDescription": "60713000154960518477",
// "endUserIdentifier": "66873381009",
// "networkType": "prepaid"
// }
// }
// res.status(200).json(response)
// });
app.post('/api/v1/mpay/billingonbehalf/reserveAndChargeVolume.json', function (req, res) {
// res.send({
// // reserveAndChargeVolumeResponse : {
// result: "SUCCESS",
// resultDescription: "60713000154960518477",
// endUserIdentifier: "66873381009",
// networkType: "prepaid"
// // }
// })
})
// app.post('/api/v1/mpay/billingonbehalf/partialRefundVolume.json', (req, res) => {
// console.log(req.body)
// console.log(req.headers)
// let response = {
// "refundVolumeV2Response": {
// "result": "SUCCESS",
// "resultDescription": "60713000154960518477",
// "endUserIdentifier": "66873381009",
// "networkType": "prepaid"
// }
// }
// res.status(200).json(response)
// });
app.post('/api/v1/mpay/billingonbehalf/queryChargeTransaction.json', (req, res) => {
console.log(req.body)
console.log(req.headers)
let response = {
"result": "SUCCESS",
"resultDescription": "201805231904005310944"
}
res.status(200).json(response)
});
app.post('/api/v1/mpay/billingonbehalf/queryRefundTransaction.json', (req, res) => {
console.log(req.body)
console.log(req.headers)
let response = {
"result": "SUCCESS",
"resultDescription": "201805231904005310944"
}
res.status(200).json(response)
});
// app.use(multiparty({ uploadDir: "./img"}));
app.post('/api/shop-cdns/upload', (req, res) => {
var azure = require('azure-storage')
var multiparty = require('multiparty')
process.env.AZURE_STORAGE_ACCOUNT = 'shareallspw'
process.env.AZURE_STORAGE_ACCESS_KEY = 'TIWwkqyvlyTySRzSelOJij2jaZbKIZ/fLUST0q9TPZGNI1dQVVn1/bU4/FnEJnUpvW1fqtWYI2HmGJeD/Oo4eA=='
var blobService = azure.createBlobService();
var form = new multiparty.Form();
form.on('part', function (part) {
if (!part.filename) return;
var size = part.byteCount;
var path = 'point'
var name = moment().valueOf() + '.' + part.filename.split('.')[1];
var container = 'spw-cdn';
blobService.createBlockBlobFromStream(container, path + '/' + name, part, size, function (error, result, response) {
if (error) {
console.log(error)
// error handling
res.status(500).send('Error uploading file');
}
console.log('result', result)
console.log('response', response)
// res.send('File uploaded successfully');
let responseMessage = {
name: part.filename,
type: part.headers['content-type'],
size: part.byteCount,
container: '/' + path,
imageUrl: 'https://shareallspw.azureedge.net/' + path + '/' + name,
thumbnails: 'test1',
thumbnails43: 'test2',
}
console.log(responseMessage)
res.send(responseMessage)
});
});
form.parse(req);
});
var multipart = require('connect-multiparty');
const { sortedUniq, result, reject } = require('lodash');
var multipartMiddleware = multipart({ uploadDir: './img' });
app.post('/api/shop-cdns/upload2', multipartMiddleware, async (req, res) => {
console.log(req.body, req.files);
var size = req.files.file.size;
var name = moment().valueOf() + '.' + req.files.file.name.split('.')[1];
var path = 'point'
var container = 'spw-cdn';
// console.log(req.files.file.path)
var blobService = azure.createBlobService();
blobService.createBlockBlobFromLocalFile(container, path + '/' + name, req.files.file.path, (error, result, response) => {
console.log(result)
console.log(response)
console.log(error)
console.log({
name: name,
type: req.files.file.type,
size: size,
container: '/' + path,
imageUrl: 'https://shareallspw.azureedge.net/' + path + '/' + name,
thumbnails: 'test1',
thumbnails43: 'test2',
})
res.send({
name: name,
type: req.files.file.type,
size: size,
container: '/' + path,
imageUrl: 'https://shareallspw.azureedge.net/' + path + '/' + name,
thumbnails: 'test1',
thumbnails43: 'test2',
})
})
});
app.get('/scf/v2/partnerSpecificPrivateId/:privateId.json', require('./scf').decryptPrivateId);
app.post('/api/v1/gsso/sendOneTimePW.json', require('./gsso').sendOneTimePassword);
app.post('/api/v1/gsso/confirmOneTimePassword.json', require('./gsso').confirmOneTimePassword);
app.get('/ssb/profile/network/subscriber/:userId/type/:userType', require('./ssb').getProfileType);
app.post('/ssb/profile/historyPackage', require('./ssb').queryHistoryPackage);
app.post('/ssb/profile/currentPackage', require('./ssb').queryCurrentPackage);
app.post('/ssb/package/apply', require('./ssb').applyPack);
app.post('/ssb/package/subscriber', require('./ssb').deletePackage); //
app.post('/verifyReceipt', require('./apple').verifyReceipt); //
app.post('/api/v1/package/packagepayment', require('./nafa').packagePayment); //
app.post('/api/v1/package/cancelPackage', require('./nafa').cancelPackage); //
app.get('/api/v1/customer', require('./d01').getCustomer);
app.post('/api/v1/customer', require('./d01').postCustomer);
app.put('/api/v1/customer', require('./d01').putCustomer);
app.delete('/api/v1/customer', require('./d01').deleteCustomer);
app.get('/api/v1/memberlink', require('./d01').getMemberLink);
app.post('/api/v1/memberlink', require('./d01').postMemberLink);
app.put('/api/v1/memberlink', require('./d01').putMemberLink);
app.delete('/api/v1/memberlink', require('./d01').deleteMemberLink);
app.get('/api/v1/address', require('./d01').getAddress);
app.post('/api/v1/address', require('./d01').postAddress);
app.put('/api/v1/address', require('./d01').putAddress);
app.delete('/api/v1/address', require('./d01').deleteAddress);
app.get('/api/v1/mastermember', require('./d01').getMasterMember);
app.post('/api/v1/mastermember', require('./d01').postMasterMember);
app.put('/api/v1/mastermember', require('./d01').putMasterMember);
app.delete('/api/v1/mastermember', require('./d01').deleteMasterMember);
app.get('/api/v1/gender', require('./d01').getGender);
app.post('/api/v1/gender', require('./d01').postGender);
app.put('/api/v1/gender', require('./d01').putGender);
app.delete('/api/v1/gender', require('./d01').deleteGender);
app.get('/api/v1/address_type', require('./d01').getAddressType);
app.post('/api/v1/address_type', require('./d01').postAddressType);
app.put('/api/v1/address_type', require('./d01').putAddressType);
app.delete('/api/v1/address_type', require('./d01').deleteAddressType);
app.post('/auth/v3.1/oauth/token', require('./admd').oauthToken);
app.post('/auth/v3.1/logout', require('./admd').logout);
app.post('/validate/token', require('./admd').validateToken);
app.post('/point/v1/deleteCustomer', require('./micro_point').deleteCustomer);
app.post('/privilege/v1/history/delete', require('./privilege').deleteCustomer);
app.post('/v1/MVP/enq/getMobileOfferInventory/', require('./true').getMobileOfferInventory);
app.post('/api/v1/LG-API/notifySubscription', require('./lg').notifySubscription);
app.post('/goapi/profile/assetDetail', require('./ccbs').assetDetail);
app.post('/goapi/profile/churnscore/offerlist', require('./ccbs').churnScoreOfferList);
app.get('/goapi/profile/external/customer/usageInfo/:type/:number', require('./ccbs').usageInfo);
app.get('/api/callback', require('./line').callback);
app.get('/api/random/leader', function (req, res) {
const months = ["เกมส์", "โน๊ต setup", "โน๊ต วัศรุต", "แบงค์", "มอส", "ปิ๊ค", "เต้นพอไม่ต้องตื่น", "เปา", "นัท", "kik", "new", "ann","na", "boky", "eve", "miki", "pla", "sugar"];
// const months = [ "ann"];
let object={}
for(var i=0; i<100; i++) {
const random = Math.floor(Math.random() * months.length);
// console.log(random, months[random]);
if(object[months[random]]) {
object[months[random]] = object[months[random]] + 1;
} else {
object[months[random]] = 1
}
}
console.log(object);
res.send(object);
})
app.get('/api/parallel/request', async function (req, res) {
let dataList = ['001','002','003','004','005','006','007','008','009','010','011','012','013','014','015','016','017','018','019','020']
let response = await completelyReq(dataList)
console.log('response to client', response)
res.send(response)
})
var parallelLimit = require('run-parallel-limit')
async function completelyReq(dataList) {
let limit = 10
let length = dataList.length > limit ? limit : dataList.length;
let tempList = []
for(let i=0; i {
reqFunc(dataList[i], )
});
// dataList.shift();
}
return new Promise( resolve => {
parallelLimit(tempList, 10, function (err, results) {
if(err) {console.log(err); reject(err)};
console.log(results)
resolve(results)
})
})
// return await Promise.all(tempList);
}
function reqFunc(arg, cb) {
// console.log(tempList)
console.log('send req ', arg, new Date())
unirest
.post('http://mockbin.com/request')
.headers({'Accept': 'application/json', 'Content-Type': 'application/json'})
.send({ "parameter": 23, "foo": "bar", "seq": arg })
.then((response) => {
// console.log(response.body.postData.text)
// let delay = Math.floor(Math.random()*10000)
console.log('recieve response ' , response.body.postData.text, new Date())
cb(null, response.body.postData.text)
// setTimeout(function () {
// cb(null, response.body.postData.text)
// }, 100)
})
}
// function check(data, dataList, tempList) {
// return new Promise(async (resolve, reject) => {
// // console.log('tempList.length', tempList.length)
// if(tempList.length == 20) {
// // let allResponse = await Promise.all(tempList);
// // console.log(allResponse)
// resolve(tempList)
// } else {
// console.log(tempList)
// tempList.push(reqFunc(dataList[0], dataList, tempList))
// dataList.shift();
// }
// })
// }
app.get('/linenoti', require('./line').lineNoti)
app.listen(port, () => console.log('app listening on port ' + port + '!'))