app.js 12 KB
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('<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\"><soapenv:Header/><soapenv:Body><tem:SearchCustomerResponse><tem:SearchCustomerResult><tem:CUSTOMERVIEWMODEL><tem:STATUSCODE>123</tem:STATUSCODE><tem:IDENTIFICATIONNUMBER>$value</tem:IDENTIFICATIONNUMBER><tem:GENDER>$value</tem:GENDER><tem:BIRTHDAY>$value</tem:BIRTHDAY></tem:CUSTOMERVIEWMODEL></tem:SearchCustomerResult></tem:SearchCustomerResponse></soapenv:Body></soapenv:Envelope>')
})

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/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');
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('/v1/MVP/enq/getMobileOfferInventory/', require('./true').getMobileOfferInventory);

app.listen(port, () => console.log('app listening on port ' + port + '!'))