index.js 2.84 KB
var express = require('express');
var Info = require('./Info');
const request = require('request');
const fs = require('fs');
const path = require('path');
const HTTPS = require('https');
const sslport = 23023;
const bodyParser = require('body-parser');
const TARGET_URL = 'https://api.line.me/v2/bot/message/reply'
var app = express();
app.use(bodyParser.json());
var songs = require('./check');
var thumbnail = 1;// 썸네일 출력 여부 (1:출력/0:미출력/기본값:1)


app.post('/hook', function (req, res) {

    var eventObj = req.body.events[0];
    var message = eventObj.message;

    // request log
    console.log('======================', new Date(), '======================');
    console.log(eventObj);
    if (eventObj.type=="message") // 일반 메시지일때
        react(eventObj.replyToken, message.text,eventObj.source.userId);
    else if  (eventObj.postback.data=="썸네일") //설정에서 썸네일 설정버튼을 눌렀을때
        songs.thumbnail_settings(eventObj.replyToken,eventObj.source.userId);

    //else if (썸네일 설정 버튼을 누르고 거기서 응답이 들어왔을때)

    else if (eeventObj.postback.data=="개수") //설정에서 출력 개수 설정버튼을 눌렀을때
        songs.amount_settings(eventObj.replyToken,eventObj.source.userId);

    //else if (출력 개수 설정 버튼을 누르고 거기서 응답이 들어왔을때)

    else if (eventObj.postback.data=="주소") //설정에서 유튜브 주소 설정버튼을 눌렀을때
        songs.address_settings(eventObj.replyToken,eventObj.source.userId);

    //else if (유튜브 주소 설정 버튼을 누르고 거기서 응답이 들어왔을때)

    //★★else if (플레이리스트를 입력했을때 뜬 버튼에서 장르를 눌렀을때)

    //★★else if (플레이리스트를 입력했을때 뜬 버튼에서 무드를 눌렀을때) 

    //★★else if (플레이리스트를 입력했을때 뜬 버튼에서 가수를 눌렀을때) 

    res.sendStatus(200);
});
function react(replyToken, message,userId) {

    request.post(
        {
            body: message
        },

        function () {
            songs.check(message, replyToken,userId);
        }
    );
}
try {
    const option = {
        ca: fs.readFileSync('/etc/letsencrypt/live/' + Info.domain + '/fullchain.pem'),
        key: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + Info.domain + '/privkey.pem'), 'utf8').toString(),
        cert: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + Info.domain + '/cert.pem'), 'utf8').toString(),
    };

    HTTPS.createServer(option, app).listen(sslport, () => {
        console.log(`[HTTPS] Server is started on port ${sslport}`);
    });
} catch (error) {
    console.log('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.');
    console.log(error);
}