Toggle navigation
Toggle navigation
This project
Loading...
Sign in
term-project
/
project
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
Solhee
2020-12-02 03:01:57 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
a48612d8e58a7d7282af36e36dd96312a7ee91ad
a48612d8
1 parent
d1461ef8
appjs_send_foodaddinfo_to_line
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
109 additions
and
34 deletions
express/app.js
express/foodapi.js
express/app.js
View file @
a48612d
const
express
=
require
(
'express'
);
const
request
=
require
(
'request'
);
const
convert
=
require
(
'xml-js'
);
const
TARGET_URL
=
'https://api.line.me/v2/bot/message/reply'
const
TOKEN
=
'z5iy5sMU1W4xZAlwvn0/5x4U+4ZsqI0hKO1ZZNFxUGlNzGBjFg2D1u6/Ij5C/Sbkncx3hyYg7Nfz5JnMD8BG/9Z3TEEHPvy1A2XhkPKs04v0/n6TjH1A3e9X23zYdYmNSGyPn2hDGglgm2p3YmtLSwdB04t89/1O/w1cDnyilFU='
const
FOODAPI_URL
=
'http://apis.data.go.kr/1470000/FoodAdtvInfoService/getFoodAdtvInfoList'
const
FOODAPI_KEY
=
'ofY2ppOq5kBqT5jYPaGsW%2BEy7OR5a1bf5Z9PHvqNKvwO5DSCaU2x2qCj%2FoXnuB1YVbMTlErkHWSMEsR5b7isrw%3D%3D'
;
var
queryParams
=
'?'
+
encodeURIComponent
(
'ServiceKey'
)
+
'='
+
key
;
//queryParams += '&' + encodeURIComponent('prdlst_cd') + '=' + encodeURIComponent('C0118010300000');
queryParams
+=
'&'
+
encodeURIComponent
(
'pc_kor_nm'
)
+
'='
+
encodeURIComponent
(
'과.채음료'
);
//queryParams += '&' + encodeURIComponent('pageNo') + '=' + encodeURIComponent('3');
//queryParams += '&' + encodeURIComponent('numOfRows') + '=' + encodeURIComponent('100');
const
fs
=
require
(
'fs'
);
const
path
=
require
(
'path'
);
const
foodapi
=
require
(
'./foodapi'
);
const
HTTPS
=
require
(
'https'
);
const
domain
=
"foodbot2020.ml"
const
sslport
=
23023
;
const
bodyParser
=
require
(
'body-parser'
);
var
app
=
express
();
app
.
use
(
bodyParser
.
json
());
app
.
post
(
'/hook'
,
function
(
req
,
res
)
{
//module - 변수 전달
const
{
variable1
,
variable2
}
=
require
(
'./moduleEx'
);
//module - 함수 전달
const
md
=
require
(
"./moduleEx2"
);
var
eventObj
=
req
.
body
.
events
[
0
];
var
source
=
eventObj
.
source
;
var
message
=
eventObj
.
message
;
const
app
=
express
();
// request log
console
.
log
(
'======================'
,
new
Date
()
,
'======================'
);
console
.
log
(
'[request]'
,
req
.
body
);
console
.
log
(
'[request source] '
,
eventObj
.
source
);
console
.
log
(
'[request message]'
,
eventObj
.
message
);
app
.
set
(
'port'
,
process
.
env
.
PORT
||
3000
);
getfoodinfo
(
eventObj
.
replyToken
,
eventObj
.
message
.
text
);
// eventObj.message.text 로 pc_kor_nm 받기
app
.
get
(
'/'
,(
req
,
res
)
=>
{
// node js가 응답
//res.send("Food Adtv Info Service");
// HTML이 응답
res
.
sendFile
(
path
.
join
(
__dirname
,
'/main.html'
));
res
.
sendStatus
(
200
);
});
app
.
listen
(
app
.
get
(
'port'
),()
=>
{
console
.
log
(
app
.
get
(
'port'
),
'번 포트에서 대기 중'
);
});
\ No newline at end of file
function
getfoodinfo
(
replyToken
,
kor_name
)
{
request
.
post
(
{
url
:
FOODAPI_URL
+
queryParams
,
},(
error
,
response
,
body
)
=>
{
if
(
error
){
console
.
log
(
'에러입니다.'
)
}
else
{
if
(
response
.
statusCode
==
200
)
{
var
result
=
body
;
var
xmltojson
=
convert
.
xml2json
(
result
,{
compact
:
true
,
spaces
:
4
});
//console.log(xmltojson);
var
resObj
=
eval
(
"("
+
xmltojson
+
")"
);
var
resultItems
=
resObj
.
response
.
body
.
items
;
var
responseMessage
=
'[ '
+
resultItems
.
item
[
0
].
PC_KOR_NM
.
_text
+
' ]\n'
;
for
(
var
i
=
0
;
i
<
resultItems
.
item
.
length
;
i
++
)
{
var
addictive
=
resultItems
.
item
[
i
].
T_KOR_NM
.
_text
;
var
specVal
=
resultItems
.
item
[
i
].
SPEC_VAL_SUMUP
.
_text
;
responseMessage
+=
addictive
+
' : '
+
specVal
+
'\n'
;
}
console
.
log
(
'[responese message]'
,
responseMessage
);
request
.
post
(
{
url
:
TARGET_URL
,
headers
:
{
'Authorization'
:
`Bearer
${
TOKEN
}
`
},
json
:
{
"replyToken"
:
replyToken
,
"messages"
:[
{
"type"
:
"text"
,
"text"
:
responseMessage
}
]
}
},(
error
,
response
,
body
)
=>
{
console
.
log
(
body
)
});
}
}
});
}
try
{
const
option
=
{
ca
:
fs
.
readFileSync
(
'/etc/letsencrypt/live/'
+
domain
+
'/fullchain.pem'
),
key
:
fs
.
readFileSync
(
path
.
resolve
(
process
.
cwd
(),
'/etc/letsencrypt/live/'
+
domain
+
'/privkey.pem'
),
'utf8'
).
toString
(),
cert
:
fs
.
readFileSync
(
path
.
resolve
(
process
.
cwd
(),
'/etc/letsencrypt/live/'
+
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
);
}
\ No newline at end of file
...
...
express/foodapi.js
View file @
a48612d
...
...
@@ -8,9 +8,9 @@ var url = 'http://apis.data.go.kr/1470000/FoodAdtvInfoService/getFoodAdtvInfoLis
var
key
=
'ofY2ppOq5kBqT5jYPaGsW%2BEy7OR5a1bf5Z9PHvqNKvwO5DSCaU2x2qCj%2FoXnuB1YVbMTlErkHWSMEsR5b7isrw%3D%3D'
;
var
queryParams
=
'?'
+
encodeURIComponent
(
'ServiceKey'
)
+
'='
+
key
;
//queryParams += '&' + encodeURIComponent('prdlst_cd') + '=' + encodeURIComponent('C0118010300000');
//queryParams += '&' + encodeURIComponent('pc_kor_nm') + '=' + encodeURIComponent('과.채음료
');
queryParams
+=
'&'
+
encodeURIComponent
(
'pc_kor_nm'
)
+
'='
+
encodeURIComponent
(
'스위트초콜릿
'
);
//queryParams += '&' + encodeURIComponent('pageNo') + '=' + encodeURIComponent('3');
queryParams
+=
'&'
+
encodeURIComponent
(
'numOfRows'
)
+
'='
+
encodeURIComponent
(
'100'
);
//
queryParams += '&' + encodeURIComponent('numOfRows') + '=' + encodeURIComponent('100');
global
.
foods
=
new
Array
();
...
...
@@ -23,32 +23,25 @@ request({
console
.
log
(
'에러입니다.'
)
}
else
{
if
(
response
.
statusCode
==
200
)
if
(
response
.
statusCode
==
200
)
{
var
result
=
body
;
var
xmltojson
=
convert
.
xml2json
(
result
,{
compact
:
true
,
spaces
:
4
});
//console.log(xmltojson);
var
resObj
=
eval
(
"("
+
xmltojson
+
")"
);
var
resultItems
=
resObj
.
response
.
body
.
items
;
console
.
log
(
xmltojson
);
var
responseMessage
=
'[ '
+
resultItems
.
item
[
0
].
PC_KOR_NM
.
_text
+
' ]\n'
;
for
(
var
i
=
0
;
i
<
100
;
i
++
){
function
fo
(){
foods
.
push
(
food
);
}
function
foo
(){
var
food
=
resObj
.
response
.
body
.
items
.
item
[
i
].
PC_KOR_NM
.
_text
;
fo
();
for
(
var
i
=
0
;
i
<
resultItems
.
item
.
length
;
i
++
){
var
addictive
=
resultItems
.
item
[
i
].
T_KOR_NM
.
_text
;
var
specVal
=
resultItems
.
item
[
i
].
SPEC_VAL_SUMUP
.
_text
;
responseMessage
+=
addictive
+
' : '
+
specVal
+
'\n'
;
}
var
food
=
resObj
.
response
.
body
.
items
.
item
[
i
].
PC_KOR_NM
.
_text
;
global
.
foods
.
push
(
food
);
//foods.food = resObj.response.body.items.item[i].PC_KOR_NM._text;
//foods.push(resObj.response.body.items.item[i].PC_KOR_NM._text);
//console.log(resObj.response.body.items.item[i].PC_KOR_NM._text);
console
.
log
(
'[responese message]'
,
responseMessage
);
}
//console.log(xmltojson);
}
//console.log('Status', response.statusCode);
//console.log('Headers', JSON.stringify(response.headers));
//console.log('Reponse received', body);
console
.
log
(
foods
[
99
]);
});
console
.
log
(
foods
);
\ No newline at end of file
...
...
Please
register
or
login
to post a comment