Showing
4 changed files
with
114 additions
and
9 deletions
This diff is collapsed. Click to expand it.
| ... | @@ -6,11 +6,13 @@ const friend = require("./friend"); | ... | @@ -6,11 +6,13 @@ const friend = require("./friend"); |
| 6 | const notify = require("./notify"); | 6 | const notify = require("./notify"); |
| 7 | const user = require("./user"); | 7 | const user = require("./user"); |
| 8 | const profile = require("./profile"); | 8 | const profile = require("./profile"); |
| 9 | +const line = require("./line") | ||
| 9 | 10 | ||
| 10 | api.use("/auth", auth.routes()); | 11 | api.use("/auth", auth.routes()); |
| 11 | api.use("/friend", friend.routes()); | 12 | api.use("/friend", friend.routes()); |
| 12 | api.use("/notify", notify.routes()); | 13 | api.use("/notify", notify.routes()); |
| 13 | api.use("/user", user.routes()); | 14 | api.use("/user", user.routes()); |
| 14 | api.use("/profile", profile.routes()); | 15 | api.use("/profile", profile.routes()); |
| 16 | +api.use("/line", line.routes()); | ||
| 15 | 17 | ||
| 16 | -module.exports = api; | 18 | +module.exports = api; |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -3,11 +3,11 @@ const lineCtrl = require("./line.ctrl"); | ... | @@ -3,11 +3,11 @@ const lineCtrl = require("./line.ctrl"); |
| 3 | var Koa = require('koa'); | 3 | var Koa = require('koa'); |
| 4 | const request = require('request'); | 4 | const request = require('request'); |
| 5 | const TARGET_URL = 'https://api.line.me/v2/bot/message/reply' | 5 | const TARGET_URL = 'https://api.line.me/v2/bot/message/reply' |
| 6 | -const TOKEN = 'tdN03DyXDAcKGZsuiPndaU7UC2GzuEQYUhPCkDnGWXGGdiPmV15QYbFU1U5JP5EpiETIKLqOmci/RxFZTfD7FRMED0OpT+3qgEYBNf8T9/jRzHRm7rblBLtzFBVOeXeYRcluOsz4koE4JaAJaUtMtwdB04t89/1O/w1cDnyilFU=' | 6 | +const TOKEN = 'iaoVQEV5adLHh7MbW8bZvHKoULoKZUD6B0bXD2l0srO+yXyXKRe4HBLvWQwrkKQx2fwdsz1O/qVpVh9eucUf9GxRb8w2dSaaWCXd9FTqDLP5Yu9xovneGprYlU/0VKSAVw1iphi9BfJWfjIjwWY2pAdB04t89/1O/w1cDnyilFU='; |
| 7 | const fs = require('fs'); | 7 | const fs = require('fs'); |
| 8 | const path = require('path'); | 8 | const path = require('path'); |
| 9 | const HTTPS = require('https'); | 9 | const HTTPS = require('https'); |
| 10 | -const domain = "www.osstest17.ml" | 10 | +const domain = "www.ossjaksimsamil.ml" |
| 11 | const sslport = 23023; | 11 | const sslport = 23023; |
| 12 | 12 | ||
| 13 | const bodyParser = require('body-parser'); | 13 | const bodyParser = require('body-parser'); | ... | ... |
| 1 | +var Koa = require('koa'); | ||
| 2 | +const request = require('request'); | ||
| 3 | +const TARGET_URL = 'https://api.line.me/v2/bot/message/reply' | ||
| 4 | +const TOKEN = 'iaoVQEV5adLHh7MbW8bZvHKoULoKZUD6B0bXD2l0srO+yXyXKRe4HBLvWQwrkKQx2fwdsz1O/qVpVh9eucUf9GxRb8w2dSaaWCXd9FTqDLP5Yu9xovneGprYlU/0VKSAVw1iphi9BfJWfjIjwWY2pAdB04t89/1O/w1cDnyilFU='; | ||
| 5 | +const fs = require('fs'); | ||
| 6 | +const path = require('path'); | ||
| 7 | +const HTTPS = require('https'); | ||
| 8 | +const domain = "www.ossjaksimsamil.ml" | ||
| 9 | +const sslport = 23023; | ||
| 10 | + | ||
| 11 | +const bodyParser = require('body-parser'); | ||
| 12 | + | ||
| 1 | const Profile = require("../../models/profile"); | 13 | const Profile = require("../../models/profile"); |
| 2 | const problem_set = require("../../data/problem_set"); | 14 | const problem_set = require("../../data/problem_set"); |
| 3 | const compareBJ = require("../../util/compareBJ"); | 15 | const compareBJ = require("../../util/compareBJ"); |
| 4 | 16 | ||
| 17 | + | ||
| 18 | +exports.linestart = function(req,res) { | ||
| 19 | + var eventObj = req.body.events[0]; | ||
| 20 | + //var source = eventObj.source; | ||
| 21 | + //var message = eventObj.message; | ||
| 22 | + | ||
| 23 | + // request log | ||
| 24 | + console.log('======================', new Date() ,'======================'); | ||
| 25 | + console.log('[request]', req.body); | ||
| 26 | + console.log('[request source] ', eventObj.source); | ||
| 27 | + console.log('[request message]', eventObj.message); | ||
| 28 | + if((eventObj.message.text == '문제추천')&&(username != undefined)){ | ||
| 29 | + console.log("문제를 추천합니다."); | ||
| 30 | + recommendData = lineCtrl.lineRecommend(username); | ||
| 31 | + recommendBJ(eventObj.replyToken, recommendData); | ||
| 32 | + } else { | ||
| 33 | + let isExist = lineCtrl.findID(eventObj.message.text); | ||
| 34 | + if (isExist == true) | ||
| 35 | + username = eventObj.message.text; | ||
| 36 | + else{ | ||
| 37 | + request.post( | ||
| 38 | + { | ||
| 39 | + url: TARGET_URL, | ||
| 40 | + headers: { | ||
| 41 | + 'Authorization': `Bearer ${TOKEN}` | ||
| 42 | + }, | ||
| 43 | + json: { | ||
| 44 | + "replyToken":replyToken, | ||
| 45 | + "messages":[ | ||
| 46 | + { | ||
| 47 | + "type":"text", | ||
| 48 | + "text": "작심삼일 혹은 백준 사이트의 ID값이 올바르지 않습니다. 다시 입력해주세요." | ||
| 49 | + } | ||
| 50 | + ] | ||
| 51 | + } | ||
| 52 | + },(body) => { | ||
| 53 | + console.log(body) | ||
| 54 | + }); | ||
| 55 | + } | ||
| 56 | + | ||
| 57 | + recommendBJ(eventObj.replyToken, eventObj.message.text); | ||
| 58 | + } | ||
| 59 | + res.sendStatus(200); | ||
| 60 | +} | ||
| 61 | + | ||
| 62 | +function recommendBJ(replyToken, message) { | ||
| 63 | + var recommendProblem = "오늘의 추천문제는 " + message.problem_title + "입니다."; | ||
| 64 | + var problemURL = "https://www.boj.kr/" + recommendData.problem_number; | ||
| 65 | + request.post( | ||
| 66 | + { | ||
| 67 | + url: TARGET_URL, | ||
| 68 | + headers: { | ||
| 69 | + 'Authorization': `Bearer ${TOKEN}` | ||
| 70 | + }, | ||
| 71 | + json: { | ||
| 72 | + "replyToken":replyToken, | ||
| 73 | + "messages":[ | ||
| 74 | + { | ||
| 75 | + "type":"text", | ||
| 76 | + "text": recommendProblem | ||
| 77 | + }, | ||
| 78 | + { | ||
| 79 | + "type":"text", | ||
| 80 | + "text": problemURL | ||
| 81 | + } | ||
| 82 | + ] | ||
| 83 | + } | ||
| 84 | + },(body) => { | ||
| 85 | + console.log(body) | ||
| 86 | + }); | ||
| 87 | + | ||
| 88 | + | ||
| 89 | + res.sendStatus(200); | ||
| 90 | +} | ||
| 91 | + | ||
| 92 | +try { | ||
| 93 | + const option = { | ||
| 94 | + ca: fs.readFileSync('/etc/letsencrypt/live/' + domain +'/fullchain.pem'), | ||
| 95 | + key: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/privkey.pem'), 'utf8').toString(), | ||
| 96 | + cert: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/cert.pem'), 'utf8').toString(), | ||
| 97 | + }; | ||
| 98 | + | ||
| 99 | + HTTPS.createServer(option, app).listen(sslport, () => { | ||
| 100 | + console.log(`[HTTPS] Server is started on port ${sslport}`); | ||
| 101 | + }); | ||
| 102 | +} catch (error) { | ||
| 103 | + console.log('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.'); | ||
| 104 | + console.log(error); | ||
| 105 | +} | ||
| 106 | + | ||
| 107 | + | ||
| 5 | /* | 108 | /* |
| 6 | POST api/notify/slack/recommend | 109 | POST api/notify/slack/recommend |
| 7 | { | 110 | { |
| 8 | username: "username" | 111 | username: "username" |
| 9 | } | 112 | } |
| 10 | */ | 113 | */ |
| 11 | -exports.lineRecommend = (username) => { | 114 | +function lineRecommend(username) { |
| 12 | 115 | ||
| 13 | const profile = await Profile.findByUsername(username); | 116 | const profile = await Profile.findByUsername(username); |
| 14 | if (!profile) { | 117 | if (!profile) { |
| ... | @@ -24,13 +127,13 @@ exports.lineRecommend = (username) => { | ... | @@ -24,13 +127,13 @@ exports.lineRecommend = (username) => { |
| 24 | if (!recommendData) { | 127 | if (!recommendData) { |
| 25 | console.log("402"); | 128 | console.log("402"); |
| 26 | return; | 129 | return; |
| 27 | - } else { | 130 | + } |
| 28 | - return recommendData; | 131 | + |
| 29 | - } | 132 | + return recommendData; |
| 133 | + | ||
| 30 | }; | 134 | }; |
| 31 | 135 | ||
| 32 | -exports.isExist = (id) => | 136 | +function isExist(username) { |
| 33 | -{ | ||
| 34 | const profile = await Profile.findByUsername(username); | 137 | const profile = await Profile.findByUsername(username); |
| 35 | if (!profile) { | 138 | if (!profile) { |
| 36 | return false; | 139 | return false; | ... | ... |
-
Please register or login to post a comment