· 7 years ago · Oct 22, 2018, 07:46 AM
1const crypto = require("crypto");
2const request = require('superagent');
3const NCMB = require('ncmb');
4module.exports = (req, res) => {
5const applicationKey =
6 '09exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
7 const clientKey =
8 '3f3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
9 saveDataStore(
10 applicationKey,
11 clientKey,
12 req.body
13 ).then(() => {
14 console.log('1');
15 console.log(req.body);
16
17 return sendPusher(
18 'e7xxxxxxxxxxxxxxxxxx',
19 '6xxxxxxxxxxxxxxxxxxx',
20 '6xxxxxxx',
21 req.body
22 )
23 })
24 .then((response) => {
25 res.json({});
26 })
27 .catch((err) => res.status(401).json(err));
28};
29
30const saveDataStore = (applicationKey, clientKey, body) => {
31 const ncmb = new NCMB(applicationKey, clientKey);
32 const Chat = ncmb.DataStore('Chat');
33 const chat = new Chat;
34 return chat
35 .set('chatid', body.chatid)
36 .set('touser', body.touser)
37 .set('message', body.message)
38 .save()
39}
40
41const sendPusher = (authKey, secretKey, appId, body) => {
42
43 const authTimestamp = Date.now() / 1000;
44 const authVersion = '1.0';
45 const medhod = 'POST';
46 const path = `/apps/${appId}/events`;
47 console.log('2');
48 console.log(path);
49 const message = {
50 data: JSON.stringify({
51 touser: body.touser,
52 message: body.message
53 }),
54 name: "message",
55 channel: body.chatid
56 };
57 console.log('3');
58 const bodyMd5 = crypto
59 .createHash('md5')
60 .update(JSON.stringify(message))
61 .digest('hex');
62const queryString = `auth_key=${authKey}&auth_timestamp=${authTimestamp}&auth_version=${authV ersion}&body_md5=${bodyMd5}`;
63 const authSigning = [
64 medhod,
65 path,
66 queryString
67 ].join("n");
68 const signature = crypto
69 .createHmac("SHA256", secretKey)
70 .update(authSigning)
71 .digest("hex");
72 return request
73 .post(`https://api.pusherapp.com${path}?
74 ${queryString}&auth_signature=${signature}`)
75 .set('Content-Type', 'application/json')
76 .send(JSON.stringify(message))
77}