Showing
7 changed files
with
186 additions
and
5 deletions
| ... | @@ -27,12 +27,12 @@ app.get('/price', function(req, res) { | ... | @@ -27,12 +27,12 @@ app.get('/price', function(req, res) { |
| 27 | coinJson.price = json[0].trade_price; | 27 | coinJson.price = json[0].trade_price; |
| 28 | responseList.push(coinJson); | 28 | responseList.push(coinJson); |
| 29 | console.log(i) | 29 | console.log(i) |
| 30 | - if(i>115){ | 30 | + if(responseList.length>116){ |
| 31 | resolve(responseList); | 31 | resolve(responseList); |
| 32 | } | 32 | } |
| 33 | }) | 33 | }) |
| 34 | .catch(err => console.error('error:' + err)); | 34 | .catch(err => console.error('error:' + err)); |
| 35 | - },i*180); | 35 | + },i*110); |
| 36 | })(i); | 36 | })(i); |
| 37 | } | 37 | } |
| 38 | } | 38 | } | ... | ... |
This diff is collapsed. Click to expand it.
| ... | @@ -16,9 +16,14 @@ | ... | @@ -16,9 +16,14 @@ |
| 16 | "license": "ISC", | 16 | "license": "ISC", |
| 17 | "dependencies": { | 17 | "dependencies": { |
| 18 | "body-parser": "^1.19.0", | 18 | "body-parser": "^1.19.0", |
| 19 | + "coingecko-api": "^1.0.10", | ||
| 20 | + "coinmarketcap-api": "^3.1.1", | ||
| 19 | "express": "^4.17.1", | 21 | "express": "^4.17.1", |
| 20 | "jsonwebtoken": "^8.5.1", | 22 | "jsonwebtoken": "^8.5.1", |
| 23 | + "node-binance-api": "^0.12.5", | ||
| 24 | + "node-coinmarketcap": "^0.2.0", | ||
| 21 | "node-fetch": "^2.6.1", | 25 | "node-fetch": "^2.6.1", |
| 22 | - "request": "^2.88.2" | 26 | + "request": "^2.88.2", |
| 27 | + "request-promise": "^4.2.6" | ||
| 23 | } | 28 | } |
| 24 | } | 29 | } | ... | ... |
| ... | @@ -24,7 +24,7 @@ fs.readFile('coin_name.txt', 'utf8', function(err,data){ | ... | @@ -24,7 +24,7 @@ fs.readFile('coin_name.txt', 'utf8', function(err,data){ |
| 24 | console.log(i) | 24 | console.log(i) |
| 25 | }) | 25 | }) |
| 26 | .catch(err => console.error('error:' + err)); | 26 | .catch(err => console.error('error:' + err)); |
| 27 | - },i*180); | 27 | + },i*10); |
| 28 | })(i); | 28 | })(i); |
| 29 | } | 29 | } |
| 30 | } | 30 | } | ... | ... |
| ... | @@ -16,4 +16,15 @@ console.log("끝") | ... | @@ -16,4 +16,15 @@ console.log("끝") |
| 16 | } | 16 | } |
| 17 | 17 | ||
| 18 | const list = [1, 2, 3, 4, 5, 6, 7] | 18 | const list = [1, 2, 3, 4, 5, 6, 7] |
| 19 | -loop(list) | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 19 | +loop(list) | ||
| 20 | + | ||
| 21 | + | ||
| 22 | +// const result = async (list) => { | ||
| 23 | +// for (const data of list) { | ||
| 24 | +// await delay() | ||
| 25 | +// .then(() => console.log(data)) | ||
| 26 | +// } | ||
| 27 | +// } | ||
| 28 | + | ||
| 29 | +// const list = [1, 2, 3, 4, 5, 6, 7] | ||
| 30 | +// result(list) | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
test3.js
0 → 100644
| 1 | +var express = require('express'); | ||
| 2 | +const request = require('request'); | ||
| 3 | +const TARGET_URL = 'https://api.line.me/v2/bot/message/reply' | ||
| 4 | +const TOKEN = '6lwsXwectIjTZ1NWp6c1t5l8nXaOjWgfeYfTOWNRRTVftaXMb4eSMj2zeficMr4/FWtyPPBuUB120kxZp58bwDilssdU5Uhc4mWz4kCPfcgiEcVwzXUktbYRE3xKAJU1zdYAsZZvI+87KY8qZvaRngdB04t89/1O/w1cDnyilFU=' | ||
| 5 | +const fs = require('fs'); | ||
| 6 | +const path = require('path'); | ||
| 7 | +const HTTPS = require('https'); | ||
| 8 | +const domain = "2018102235.oss2021.tk" | ||
| 9 | +const sslport = 23023; | ||
| 10 | + | ||
| 11 | +const fetch = require('node-fetch'); | ||
| 12 | +const bodyParser = require('body-parser'); | ||
| 13 | +var app = express(); | ||
| 14 | +app.use(bodyParser.json()); | ||
| 15 | + | ||
| 16 | +app.post('/hook', function(req, res) { | ||
| 17 | + var eventObj = req.body.events[0]; | ||
| 18 | + var source = eventObj.source; | ||
| 19 | + var message = eventObj.message; | ||
| 20 | + // request log | ||
| 21 | + console.log('======================', new Date() ,'======================'); | ||
| 22 | + console.log('[request]', req.body); | ||
| 23 | + console.log('[request source] ', source); | ||
| 24 | + console.log('[request message]', message); | ||
| 25 | + | ||
| 26 | + fs.readFile('coin_name.txt', 'utf8', function(err,data){ | ||
| 27 | + arr = data.split(","); | ||
| 28 | + // console.log(arr); | ||
| 29 | + var responseList = new Array(); | ||
| 30 | + function print_coin(){ | ||
| 31 | + var promise = new Promise(function(resolve,reject){ | ||
| 32 | + for(j=0;j<arr.length/10;j++){ | ||
| 33 | + for(i=j*10;i<(j+1)*10;i++){ | ||
| 34 | + (function(i){ | ||
| 35 | + setTimeout(function(){ | ||
| 36 | + const url = 'https://api.upbit.com/v1/candles/minutes/1?market='+arr[i]+'&count=1'; | ||
| 37 | + const options = {method: 'GET', headers: {Accept: 'application/json'}}; | ||
| 38 | + var coinJson = new Object(); | ||
| 39 | + fetch(url, options) | ||
| 40 | + .then(res => res.json()) | ||
| 41 | + .then(json => { | ||
| 42 | + coinJson.coin = arr[i]; | ||
| 43 | + coinJson.price = json[0].trade_price; | ||
| 44 | + responseList.push(coinJson); | ||
| 45 | + console.log(i) | ||
| 46 | + if(responseList.length>116){ | ||
| 47 | + resolve(responseList); | ||
| 48 | + } | ||
| 49 | + }) | ||
| 50 | + .catch(err => console.error('error:' + err)); | ||
| 51 | + },i*110); | ||
| 52 | + })(i); | ||
| 53 | + } | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + }); | ||
| 57 | + return promise; | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | + request.post( | ||
| 61 | + { | ||
| 62 | + url: TARGET_URL, | ||
| 63 | + headers: { | ||
| 64 | + 'Authorization': `Bearer ${TOKEN}` | ||
| 65 | + }, | ||
| 66 | + json: { | ||
| 67 | + "replyToken":eventObj.replyToken, | ||
| 68 | + "messages":[ | ||
| 69 | + { | ||
| 70 | + "type":"text", | ||
| 71 | + "text":resList[0].coin | ||
| 72 | + } | ||
| 73 | + ] | ||
| 74 | + } | ||
| 75 | + },(error, response, body) => { | ||
| 76 | + console.log(body) | ||
| 77 | + }); | ||
| 78 | + res.sendStatus(200); | ||
| 79 | + }) | ||
| 80 | +}) | ||
| 81 | + | ||
| 82 | +app.post('/hook', function (req, res) { | ||
| 83 | + | ||
| 84 | + var eventObj = req.body.events[0]; | ||
| 85 | + var source = eventObj.source; | ||
| 86 | + var message = eventObj.message; | ||
| 87 | + // request log | ||
| 88 | + console.log('======================', new Date() ,'======================'); | ||
| 89 | + console.log('[request]', req.body); | ||
| 90 | + console.log('[request source] ', eventObj.source); | ||
| 91 | + console.log('[request message]', eventObj.message); | ||
| 92 | + | ||
| 93 | + | ||
| 94 | + request.post( | ||
| 95 | + { | ||
| 96 | + url: TARGET_URL, | ||
| 97 | + headers: { | ||
| 98 | + 'Authorization': `Bearer ${TOKEN}` | ||
| 99 | + }, | ||
| 100 | + json: { | ||
| 101 | + "replyToken":eventObj.replyToken, | ||
| 102 | + "messages":[ | ||
| 103 | + { | ||
| 104 | + "type":"text", | ||
| 105 | + "text":"Hello, user" | ||
| 106 | + }, | ||
| 107 | + { | ||
| 108 | + | ||
| 109 | + } | ||
| 110 | + ] | ||
| 111 | + } | ||
| 112 | + },(error, response, body) => { | ||
| 113 | + console.log(body) | ||
| 114 | + }); | ||
| 115 | + | ||
| 116 | + | ||
| 117 | + res.sendStatus(200); | ||
| 118 | +}); | ||
| 119 | + | ||
| 120 | +try { | ||
| 121 | + const option = { | ||
| 122 | + ca: fs.readFileSync('/etc/letsencrypt/live/' + domain +'/fullchain.pem'), | ||
| 123 | + key: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/privkey.pem'), 'utf8').toString(), | ||
| 124 | + cert: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/cert.pem'), 'utf8').toString(), | ||
| 125 | + }; | ||
| 126 | + | ||
| 127 | + HTTPS.createServer(option, app).listen(sslport, () => { | ||
| 128 | + console.log(`[HTTPS] Server is started on port ${sslport}`); | ||
| 129 | + }); | ||
| 130 | + } catch (error) { | ||
| 131 | + console.log('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.'); | ||
| 132 | + console.log(error); | ||
| 133 | + } | ||
| 134 | + |
test6.js
0 → 100644
| 1 | +const fetch = require('node-fetch'); | ||
| 2 | +const url = 'https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT'; | ||
| 3 | +const options = {method: 'GET', headers: {Accept: 'application/json'}}; | ||
| 4 | +const rp = require('request-promise'); | ||
| 5 | +const requestOptions = { | ||
| 6 | + method: 'GET', | ||
| 7 | + uri: 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest', | ||
| 8 | + qs: { | ||
| 9 | + 'start': '1', | ||
| 10 | + 'limit': '10', | ||
| 11 | + 'convert': 'KRW' | ||
| 12 | + }, | ||
| 13 | + headers: { | ||
| 14 | + 'X-CMC_PRO_API_KEY': 'c2f8e0b0-a253-4de3-a63f-9f564c8cdd1f' | ||
| 15 | + }, | ||
| 16 | + json: true, | ||
| 17 | + gzip: true | ||
| 18 | +}; | ||
| 19 | +fetch(url, options) | ||
| 20 | + .then(res => res.json()) | ||
| 21 | + .then(json => | ||
| 22 | + rp(requestOptions).then(response =>{ | ||
| 23 | + var i=0; | ||
| 24 | + while(response.data[i].id !== 825){ | ||
| 25 | + i = i+1; | ||
| 26 | + } | ||
| 27 | + console.log('API call response:', json.price*response.data[i].quote.KRW.price); | ||
| 28 | + }) | ||
| 29 | + | ||
| 30 | + ) | ||
| 31 | + .catch(err => console.error('error:' + err)); |
-
Please register or login to post a comment