Huh Jin-Ho

add server code

server_code @ bca4d754
1 -Subproject commit bca4d754b2f01d09d2c9eec4522a79ae6cb7537c
No preview for this file type
1 +node_modules
2 +./dff
...\ No newline at end of file ...\ No newline at end of file
1 +version: 0.0
2 +os: linux
3 +files:
4 + - source: /
5 + destination: /opt/food_test
6 +hooks:
7 + ApplicationStop:
8 + - location: deployment_scripts/stop.sh
9 + timeout: 180
10 + AfterInstall:
11 + - location: deployment_scripts/deploy.sh
12 + timeout: 180
13 + ApplicationStart:
14 + - location: deployment_scripts/start.sh
15 + timeout: 180
1 +#!/bin/bash
2 +cd /opt/food_test
3 +sudo npm install
4 +sudo node /opt/food_test/src/create_database.js
5 +sudo node /opt/food_test/src/insert_db.js
1 +#!/usr/bin/env bash
2 +#sudo pm2 stop node-app
3 +# actually start the server
4 +sudo pm2 start /opt/food_test/src/bin/www -i 0 --name "node-app"
1 +#!/usr/bin/env bash
2 +sudo pm2 stop node-app
...\ No newline at end of file ...\ No newline at end of file
1 +{
2 + "name": "food-waste",
3 + "version": "0.0.0",
4 + "lockfileVersion": 1,
5 + "requires": true,
6 + "dependencies": {
7 + "accepts": {
8 + "version": "1.3.7",
9 + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
10 + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
11 + "requires": {
12 + "mime-types": "~2.1.24",
13 + "negotiator": "0.6.2"
14 + }
15 + },
16 + "acorn": {
17 + "version": "2.7.0",
18 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz",
19 + "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc="
20 + },
21 + "acorn-globals": {
22 + "version": "1.0.9",
23 + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz",
24 + "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=",
25 + "requires": {
26 + "acorn": "^2.1.0"
27 + }
28 + },
29 + "acron": {
30 + "version": "1.0.5",
31 + "resolved": "https://registry.npmjs.org/acron/-/acron-1.0.5.tgz",
32 + "integrity": "sha512-Jm3uey9PSUl5k9RsjBSfDJG35nG0vd9B4FUCV1J/NeVHDQ5HJPVpAhmGrPYtPKh0gLhEUIEy4DKqBy/p60B+4Q==",
33 + "requires": {
34 + "lodash": "^4.17.11"
35 + }
36 + },
37 + "align-text": {
38 + "version": "0.1.4",
39 + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
40 + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
41 + "requires": {
42 + "kind-of": "^3.0.2",
43 + "longest": "^1.0.1",
44 + "repeat-string": "^1.5.2"
45 + }
46 + },
47 + "amdefine": {
48 + "version": "1.0.1",
49 + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
50 + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
51 + },
52 + "array-flatten": {
53 + "version": "1.1.1",
54 + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
55 + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
56 + },
57 + "asap": {
58 + "version": "1.0.0",
59 + "resolved": "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz",
60 + "integrity": "sha1-sqRdpf36ILBJb8N2jMJ8EvqRan0="
61 + },
62 + "aws-sdk": {
63 + "version": "2.587.0",
64 + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.587.0.tgz",
65 + "integrity": "sha512-MAdUE4BC+hyfFPoQc61aV/tIfApp5ifqe3segW4GJq6dMmSCZdFbDwvs5ZUkgOSJ4ks3ZrpH9eCHpt6r0dFJYQ==",
66 + "requires": {
67 + "buffer": "4.9.1",
68 + "events": "1.1.1",
69 + "ieee754": "1.1.13",
70 + "jmespath": "0.15.0",
71 + "querystring": "0.2.0",
72 + "sax": "1.2.1",
73 + "url": "0.10.3",
74 + "uuid": "3.3.2",
75 + "xml2js": "0.4.19"
76 + }
77 + },
78 + "base64-js": {
79 + "version": "1.3.1",
80 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
81 + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
82 + },
83 + "basic-auth": {
84 + "version": "2.0.1",
85 + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
86 + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
87 + "requires": {
88 + "safe-buffer": "5.1.2"
89 + }
90 + },
91 + "body-parser": {
92 + "version": "1.18.3",
93 + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
94 + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
95 + "requires": {
96 + "bytes": "3.0.0",
97 + "content-type": "~1.0.4",
98 + "debug": "2.6.9",
99 + "depd": "~1.1.2",
100 + "http-errors": "~1.6.3",
101 + "iconv-lite": "0.4.23",
102 + "on-finished": "~2.3.0",
103 + "qs": "6.5.2",
104 + "raw-body": "2.3.3",
105 + "type-is": "~1.6.16"
106 + }
107 + },
108 + "buffer": {
109 + "version": "4.9.1",
110 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
111 + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
112 + "requires": {
113 + "base64-js": "^1.0.2",
114 + "ieee754": "^1.1.4",
115 + "isarray": "^1.0.0"
116 + }
117 + },
118 + "bytes": {
119 + "version": "3.0.0",
120 + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
121 + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
122 + },
123 + "camelcase": {
124 + "version": "1.2.1",
125 + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
126 + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
127 + },
128 + "center-align": {
129 + "version": "0.1.3",
130 + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
131 + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
132 + "requires": {
133 + "align-text": "^0.1.3",
134 + "lazy-cache": "^1.0.3"
135 + }
136 + },
137 + "character-parser": {
138 + "version": "1.2.1",
139 + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.1.tgz",
140 + "integrity": "sha1-wN3kqxgnE7kZuXCVmhI+zBow/NY="
141 + },
142 + "clean-css": {
143 + "version": "3.4.28",
144 + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz",
145 + "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=",
146 + "requires": {
147 + "commander": "2.8.x",
148 + "source-map": "0.4.x"
149 + },
150 + "dependencies": {
151 + "commander": {
152 + "version": "2.8.1",
153 + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
154 + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
155 + "requires": {
156 + "graceful-readlink": ">= 1.0.0"
157 + }
158 + }
159 + }
160 + },
161 + "cliui": {
162 + "version": "2.1.0",
163 + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
164 + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
165 + "requires": {
166 + "center-align": "^0.1.1",
167 + "right-align": "^0.1.1",
168 + "wordwrap": "0.0.2"
169 + },
170 + "dependencies": {
171 + "wordwrap": {
172 + "version": "0.0.2",
173 + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
174 + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
175 + }
176 + }
177 + },
178 + "commander": {
179 + "version": "2.6.0",
180 + "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz",
181 + "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0="
182 + },
183 + "constantinople": {
184 + "version": "3.0.2",
185 + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.0.2.tgz",
186 + "integrity": "sha1-S5RdmTeQe82Y7ldRIsOBdRZUQUE=",
187 + "requires": {
188 + "acorn": "^2.1.0"
189 + }
190 + },
191 + "content-disposition": {
192 + "version": "0.5.2",
193 + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
194 + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
195 + },
196 + "content-type": {
197 + "version": "1.0.4",
198 + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
199 + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
200 + },
201 + "cookie": {
202 + "version": "0.3.1",
203 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
204 + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
205 + },
206 + "cookie-parser": {
207 + "version": "1.4.4",
208 + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.4.tgz",
209 + "integrity": "sha512-lo13tqF3JEtFO7FyA49CqbhaFkskRJ0u/UAiINgrIXeRCY41c88/zxtrECl8AKH3B0hj9q10+h3Kt8I7KlW4tw==",
210 + "requires": {
211 + "cookie": "0.3.1",
212 + "cookie-signature": "1.0.6"
213 + }
214 + },
215 + "cookie-signature": {
216 + "version": "1.0.6",
217 + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
218 + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
219 + },
220 + "css": {
221 + "version": "1.0.8",
222 + "resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz",
223 + "integrity": "sha1-k4aBHKgrzMnuf7WnMrHioxfIo+c=",
224 + "requires": {
225 + "css-parse": "1.0.4",
226 + "css-stringify": "1.0.5"
227 + }
228 + },
229 + "css-parse": {
230 + "version": "1.0.4",
231 + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz",
232 + "integrity": "sha1-OLBQP7+dqfVOnB29pg4UXHcRe90="
233 + },
234 + "css-stringify": {
235 + "version": "1.0.5",
236 + "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz",
237 + "integrity": "sha1-sNBClG2ylTu50pKQCmy19tASIDE="
238 + },
239 + "debug": {
240 + "version": "2.6.9",
241 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
242 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
243 + "requires": {
244 + "ms": "2.0.0"
245 + }
246 + },
247 + "decamelize": {
248 + "version": "1.2.0",
249 + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
250 + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
251 + },
252 + "depd": {
253 + "version": "1.1.2",
254 + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
255 + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
256 + },
257 + "destroy": {
258 + "version": "1.0.4",
259 + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
260 + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
261 + },
262 + "ee-first": {
263 + "version": "1.1.1",
264 + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
265 + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
266 + },
267 + "encodeurl": {
268 + "version": "1.0.2",
269 + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
270 + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
271 + },
272 + "escape-html": {
273 + "version": "1.0.3",
274 + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
275 + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
276 + },
277 + "etag": {
278 + "version": "1.8.1",
279 + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
280 + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
281 + },
282 + "events": {
283 + "version": "1.1.1",
284 + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
285 + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ="
286 + },
287 + "express": {
288 + "version": "4.16.4",
289 + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
290 + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
291 + "requires": {
292 + "accepts": "~1.3.5",
293 + "array-flatten": "1.1.1",
294 + "body-parser": "1.18.3",
295 + "content-disposition": "0.5.2",
296 + "content-type": "~1.0.4",
297 + "cookie": "0.3.1",
298 + "cookie-signature": "1.0.6",
299 + "debug": "2.6.9",
300 + "depd": "~1.1.2",
301 + "encodeurl": "~1.0.2",
302 + "escape-html": "~1.0.3",
303 + "etag": "~1.8.1",
304 + "finalhandler": "1.1.1",
305 + "fresh": "0.5.2",
306 + "merge-descriptors": "1.0.1",
307 + "methods": "~1.1.2",
308 + "on-finished": "~2.3.0",
309 + "parseurl": "~1.3.2",
310 + "path-to-regexp": "0.1.7",
311 + "proxy-addr": "~2.0.4",
312 + "qs": "6.5.2",
313 + "range-parser": "~1.2.0",
314 + "safe-buffer": "5.1.2",
315 + "send": "0.16.2",
316 + "serve-static": "1.13.2",
317 + "setprototypeof": "1.1.0",
318 + "statuses": "~1.4.0",
319 + "type-is": "~1.6.16",
320 + "utils-merge": "1.0.1",
321 + "vary": "~1.1.2"
322 + }
323 + },
324 + "finalhandler": {
325 + "version": "1.1.1",
326 + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
327 + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
328 + "requires": {
329 + "debug": "2.6.9",
330 + "encodeurl": "~1.0.2",
331 + "escape-html": "~1.0.3",
332 + "on-finished": "~2.3.0",
333 + "parseurl": "~1.3.2",
334 + "statuses": "~1.4.0",
335 + "unpipe": "~1.0.0"
336 + }
337 + },
338 + "forwarded": {
339 + "version": "0.1.2",
340 + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
341 + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
342 + },
343 + "fresh": {
344 + "version": "0.5.2",
345 + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
346 + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
347 + },
348 + "graceful-readlink": {
349 + "version": "1.0.1",
350 + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
351 + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU="
352 + },
353 + "http-errors": {
354 + "version": "1.6.3",
355 + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
356 + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
357 + "requires": {
358 + "depd": "~1.1.2",
359 + "inherits": "2.0.3",
360 + "setprototypeof": "1.1.0",
361 + "statuses": ">= 1.4.0 < 2"
362 + }
363 + },
364 + "iconv-lite": {
365 + "version": "0.4.23",
366 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
367 + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
368 + "requires": {
369 + "safer-buffer": ">= 2.1.2 < 3"
370 + }
371 + },
372 + "ieee754": {
373 + "version": "1.1.13",
374 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
375 + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg=="
376 + },
377 + "inherits": {
378 + "version": "2.0.3",
379 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
380 + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
381 + },
382 + "ipaddr.js": {
383 + "version": "1.9.0",
384 + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
385 + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
386 + },
387 + "is-buffer": {
388 + "version": "1.1.6",
389 + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
390 + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
391 + },
392 + "is-promise": {
393 + "version": "2.1.0",
394 + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
395 + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
396 + },
397 + "isarray": {
398 + "version": "1.0.0",
399 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
400 + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
401 + },
402 + "jade": {
403 + "version": "1.11.0",
404 + "resolved": "https://registry.npmjs.org/jade/-/jade-1.11.0.tgz",
405 + "integrity": "sha1-nIDlOMEtP7lcjZu5VZ+gzAQEBf0=",
406 + "requires": {
407 + "character-parser": "1.2.1",
408 + "clean-css": "^3.1.9",
409 + "commander": "~2.6.0",
410 + "constantinople": "~3.0.1",
411 + "jstransformer": "0.0.2",
412 + "mkdirp": "~0.5.0",
413 + "transformers": "2.1.0",
414 + "uglify-js": "^2.4.19",
415 + "void-elements": "~2.0.1",
416 + "with": "~4.0.0"
417 + }
418 + },
419 + "jmespath": {
420 + "version": "0.15.0",
421 + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz",
422 + "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc="
423 + },
424 + "jstransformer": {
425 + "version": "0.0.2",
426 + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-0.0.2.tgz",
427 + "integrity": "sha1-eq4pqQPRls+glz2IXT5HlH7Ndqs=",
428 + "requires": {
429 + "is-promise": "^2.0.0",
430 + "promise": "^6.0.1"
431 + }
432 + },
433 + "kind-of": {
434 + "version": "3.2.2",
435 + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
436 + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
437 + "requires": {
438 + "is-buffer": "^1.1.5"
439 + }
440 + },
441 + "lazy-cache": {
442 + "version": "1.0.4",
443 + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
444 + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
445 + },
446 + "lodash": {
447 + "version": "4.17.15",
448 + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
449 + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
450 + },
451 + "longest": {
452 + "version": "1.0.1",
453 + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
454 + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
455 + },
456 + "media-typer": {
457 + "version": "0.3.0",
458 + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
459 + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
460 + },
461 + "merge-descriptors": {
462 + "version": "1.0.1",
463 + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
464 + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
465 + },
466 + "methods": {
467 + "version": "1.1.2",
468 + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
469 + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
470 + },
471 + "mime": {
472 + "version": "1.4.1",
473 + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
474 + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
475 + },
476 + "mime-db": {
477 + "version": "1.42.0",
478 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz",
479 + "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ=="
480 + },
481 + "mime-types": {
482 + "version": "2.1.25",
483 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz",
484 + "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==",
485 + "requires": {
486 + "mime-db": "1.42.0"
487 + }
488 + },
489 + "minimist": {
490 + "version": "0.0.8",
491 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
492 + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
493 + },
494 + "mkdirp": {
495 + "version": "0.5.1",
496 + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
497 + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
498 + "requires": {
499 + "minimist": "0.0.8"
500 + }
501 + },
502 + "morgan": {
503 + "version": "1.9.1",
504 + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz",
505 + "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==",
506 + "requires": {
507 + "basic-auth": "~2.0.0",
508 + "debug": "2.6.9",
509 + "depd": "~1.1.2",
510 + "on-finished": "~2.3.0",
511 + "on-headers": "~1.0.1"
512 + }
513 + },
514 + "ms": {
515 + "version": "2.0.0",
516 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
517 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
518 + },
519 + "negotiator": {
520 + "version": "0.6.2",
521 + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
522 + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
523 + },
524 + "on-finished": {
525 + "version": "2.3.0",
526 + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
527 + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
528 + "requires": {
529 + "ee-first": "1.1.1"
530 + }
531 + },
532 + "on-headers": {
533 + "version": "1.0.2",
534 + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
535 + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
536 + },
537 + "optimist": {
538 + "version": "0.3.7",
539 + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz",
540 + "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=",
541 + "requires": {
542 + "wordwrap": "~0.0.2"
543 + }
544 + },
545 + "parseurl": {
546 + "version": "1.3.3",
547 + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
548 + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
549 + },
550 + "path-to-regexp": {
551 + "version": "0.1.7",
552 + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
553 + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
554 + },
555 + "promise": {
556 + "version": "6.1.0",
557 + "resolved": "https://registry.npmjs.org/promise/-/promise-6.1.0.tgz",
558 + "integrity": "sha1-LOcp9rlLRcJoka0GAsXJDgTG7vY=",
559 + "requires": {
560 + "asap": "~1.0.0"
561 + }
562 + },
563 + "proxy-addr": {
564 + "version": "2.0.5",
565 + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
566 + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
567 + "requires": {
568 + "forwarded": "~0.1.2",
569 + "ipaddr.js": "1.9.0"
570 + }
571 + },
572 + "punycode": {
573 + "version": "1.3.2",
574 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
575 + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
576 + },
577 + "qs": {
578 + "version": "6.5.2",
579 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
580 + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
581 + },
582 + "querystring": {
583 + "version": "0.2.0",
584 + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
585 + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
586 + },
587 + "range-parser": {
588 + "version": "1.2.1",
589 + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
590 + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
591 + },
592 + "raw-body": {
593 + "version": "2.3.3",
594 + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
595 + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
596 + "requires": {
597 + "bytes": "3.0.0",
598 + "http-errors": "1.6.3",
599 + "iconv-lite": "0.4.23",
600 + "unpipe": "1.0.0"
601 + }
602 + },
603 + "repeat-string": {
604 + "version": "1.6.1",
605 + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
606 + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
607 + },
608 + "right-align": {
609 + "version": "0.1.3",
610 + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
611 + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
612 + "requires": {
613 + "align-text": "^0.1.1"
614 + }
615 + },
616 + "safe-buffer": {
617 + "version": "5.1.2",
618 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
619 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
620 + },
621 + "safer-buffer": {
622 + "version": "2.1.2",
623 + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
624 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
625 + },
626 + "sax": {
627 + "version": "1.2.1",
628 + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz",
629 + "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o="
630 + },
631 + "send": {
632 + "version": "0.16.2",
633 + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
634 + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
635 + "requires": {
636 + "debug": "2.6.9",
637 + "depd": "~1.1.2",
638 + "destroy": "~1.0.4",
639 + "encodeurl": "~1.0.2",
640 + "escape-html": "~1.0.3",
641 + "etag": "~1.8.1",
642 + "fresh": "0.5.2",
643 + "http-errors": "~1.6.2",
644 + "mime": "1.4.1",
645 + "ms": "2.0.0",
646 + "on-finished": "~2.3.0",
647 + "range-parser": "~1.2.0",
648 + "statuses": "~1.4.0"
649 + }
650 + },
651 + "serve-static": {
652 + "version": "1.13.2",
653 + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
654 + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
655 + "requires": {
656 + "encodeurl": "~1.0.2",
657 + "escape-html": "~1.0.3",
658 + "parseurl": "~1.3.2",
659 + "send": "0.16.2"
660 + }
661 + },
662 + "setprototypeof": {
663 + "version": "1.1.0",
664 + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
665 + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
666 + },
667 + "source-map": {
668 + "version": "0.4.4",
669 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
670 + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
671 + "requires": {
672 + "amdefine": ">=0.0.4"
673 + }
674 + },
675 + "statuses": {
676 + "version": "1.4.0",
677 + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
678 + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
679 + },
680 + "transformers": {
681 + "version": "2.1.0",
682 + "resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz",
683 + "integrity": "sha1-XSPLNVYd2F3Gf7hIIwm0fVPM6ac=",
684 + "requires": {
685 + "css": "~1.0.8",
686 + "promise": "~2.0",
687 + "uglify-js": "~2.2.5"
688 + },
689 + "dependencies": {
690 + "is-promise": {
691 + "version": "1.0.1",
692 + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz",
693 + "integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU="
694 + },
695 + "promise": {
696 + "version": "2.0.0",
697 + "resolved": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz",
698 + "integrity": "sha1-RmSKqdYFr10ucMMCS/WUNtoCuA4=",
699 + "requires": {
700 + "is-promise": "~1"
701 + }
702 + },
703 + "source-map": {
704 + "version": "0.1.43",
705 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
706 + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
707 + "requires": {
708 + "amdefine": ">=0.0.4"
709 + }
710 + },
711 + "uglify-js": {
712 + "version": "2.2.5",
713 + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz",
714 + "integrity": "sha1-puAqcNg5eSuXgEiLe4sYTAlcmcc=",
715 + "requires": {
716 + "optimist": "~0.3.5",
717 + "source-map": "~0.1.7"
718 + }
719 + }
720 + }
721 + },
722 + "type-is": {
723 + "version": "1.6.18",
724 + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
725 + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
726 + "requires": {
727 + "media-typer": "0.3.0",
728 + "mime-types": "~2.1.24"
729 + }
730 + },
731 + "uglify-js": {
732 + "version": "2.8.29",
733 + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
734 + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
735 + "requires": {
736 + "source-map": "~0.5.1",
737 + "uglify-to-browserify": "~1.0.0",
738 + "yargs": "~3.10.0"
739 + },
740 + "dependencies": {
741 + "source-map": {
742 + "version": "0.5.7",
743 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
744 + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
745 + }
746 + }
747 + },
748 + "uglify-to-browserify": {
749 + "version": "1.0.2",
750 + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
751 + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
752 + "optional": true
753 + },
754 + "unpipe": {
755 + "version": "1.0.0",
756 + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
757 + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
758 + },
759 + "url": {
760 + "version": "0.10.3",
761 + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz",
762 + "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=",
763 + "requires": {
764 + "punycode": "1.3.2",
765 + "querystring": "0.2.0"
766 + }
767 + },
768 + "utils-merge": {
769 + "version": "1.0.1",
770 + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
771 + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
772 + },
773 + "uuid": {
774 + "version": "3.3.2",
775 + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
776 + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
777 + },
778 + "vary": {
779 + "version": "1.1.2",
780 + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
781 + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
782 + },
783 + "void-elements": {
784 + "version": "2.0.1",
785 + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
786 + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w="
787 + },
788 + "window-size": {
789 + "version": "0.1.0",
790 + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
791 + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0="
792 + },
793 + "with": {
794 + "version": "4.0.3",
795 + "resolved": "https://registry.npmjs.org/with/-/with-4.0.3.tgz",
796 + "integrity": "sha1-7v0VTp550sjTQXtkeo8U2f7M4U4=",
797 + "requires": {
798 + "acorn": "^1.0.1",
799 + "acorn-globals": "^1.0.3"
800 + },
801 + "dependencies": {
802 + "acorn": {
803 + "version": "1.2.2",
804 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz",
805 + "integrity": "sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ="
806 + }
807 + }
808 + },
809 + "wordwrap": {
810 + "version": "0.0.3",
811 + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
812 + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
813 + },
814 + "xml2js": {
815 + "version": "0.4.19",
816 + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
817 + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
818 + "requires": {
819 + "sax": ">=0.6.0",
820 + "xmlbuilder": "~9.0.1"
821 + }
822 + },
823 + "xmlbuilder": {
824 + "version": "9.0.7",
825 + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
826 + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
827 + },
828 + "yargs": {
829 + "version": "3.10.0",
830 + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
831 + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
832 + "requires": {
833 + "camelcase": "^1.0.2",
834 + "cliui": "^2.1.0",
835 + "decamelize": "^1.0.0",
836 + "window-size": "0.1.0"
837 + }
838 + }
839 + }
840 +}
1 +{
2 + "name": "food-waste",
3 + "version": "0.0.0",
4 + "private": true,
5 + "scripts": {
6 + "start": "node ./src/bin/www"
7 + },
8 + "dependencies": {
9 + "acron": "^1.0.5",
10 + "aws-sdk": "^2.587.0",
11 + "cookie-parser": "~1.4.4",
12 + "debug": "~2.6.9",
13 + "express": "~4.16.1",
14 + "http-errors": "~1.6.3",
15 + "jade": "~1.11.0",
16 + "morgan": "~1.9.1"
17 + }
18 +}
1 +var createError = require('http-errors');
2 +var express = require('express');
3 +var path = require('path');
4 +var cookieParser = require('cookie-parser');
5 +var logger = require('morgan');
6 +
7 +var indexRouter = require('./router.js');
8 +// var usersRouter = require('./routes/users');
9 +
10 +var app = express();
11 +
12 +// view engine setup
13 +app.set('views', path.join(__dirname, 'views'));
14 +app.set('view engine', 'jade');
15 +
16 +app.use(logger('dev'));
17 +app.use(express.json());
18 +app.use(express.urlencoded({ extended: false }));
19 +app.use(cookieParser());
20 +app.use(express.static(path.join(__dirname, 'public')));
21 +
22 +app.use('/', indexRouter);
23 +
24 +// catch 404 and forward to error handler
25 +app.use(function(req, res, next) {
26 + next(createError(200));
27 +});
28 +
29 +// error handler
30 +app.use(function(err, req, res, next) {
31 + // set locals, only providing error in development
32 + res.locals.message = err.message;
33 + res.locals.error = req.app.get('env') === 'development' ? err : {};
34 +
35 + // render the error page
36 + res.status(err.status || 500);
37 + res.render('error');
38 +});
39 +
40 +module.exports = app;
1 +#!/usr/bin/env node
2 +
3 +/**
4 + * Module dependencies.
5 + */
6 +
7 +var app = require('../app');
8 +var debug = require('debug')('food-waste:server');
9 +var http = require('http');
10 +
11 +/**
12 + * Get port from environment and store in Express.
13 + */
14 +
15 +var port = normalizePort(process.env.PORT || '3000');
16 +app.set('port', port);
17 +
18 +/**
19 + * Create HTTP server.
20 + */
21 +
22 +var server = http.createServer(app);
23 +
24 +/**
25 + * Listen on provided port, on all network interfaces.
26 + */
27 +
28 +server.listen(port);
29 +server.on('error', onError);
30 +server.on('listening', onListening);
31 +
32 +/**
33 + * Normalize a port into a number, string, or false.
34 + */
35 +
36 +function normalizePort(val) {
37 + var port = parseInt(val, 10);
38 +
39 + if (isNaN(port)) {
40 + // named pipe
41 + return val;
42 + }
43 +
44 + if (port >= 0) {
45 + // port number
46 + return port;
47 + }
48 +
49 + return false;
50 +}
51 +
52 +/**
53 + * Event listener for HTTP server "error" event.
54 + */
55 +
56 +function onError(error) {
57 + if (error.syscall !== 'listen') {
58 + throw error;
59 + }
60 +
61 + var bind = typeof port === 'string'
62 + ? 'Pipe ' + port
63 + : 'Port ' + port;
64 +
65 + // handle specific listen errors with friendly messages
66 + switch (error.code) {
67 + case 'EACCES':
68 + console.error(bind + ' requires elevated privileges');
69 + process.exit(1);
70 + break;
71 + case 'EADDRINUSE':
72 + console.error(bind + ' is already in use');
73 + process.exit(1);
74 + break;
75 + default:
76 + throw error;
77 + }
78 +}
79 +
80 +/**
81 + * Event listener for HTTP server "listening" event.
82 + */
83 +
84 +function onListening() {
85 + var addr = server.address();
86 + var bind = typeof addr === 'string'
87 + ? 'pipe ' + addr
88 + : 'port ' + addr.port;
89 + debug('Listening on ' + bind);
90 +}
1 +var AWS = require('aws-sdk');
2 +
3 +AWS.config.update({
4 + region: "ap-northeast-2",
5 +})
6 +
7 +var dynamodb = new AWS.DynamoDB();
8 +
9 +var pi_data =
10 +{
11 + TableName: 'pi_data',
12 + KeySchema: [
13 + { // Required
14 + AttributeName: 'ras_id',
15 + KeyType: 'HASH',
16 + },
17 + { // Optional
18 + AttributeName: 'save_date',
19 + KeyType: 'RANGE',
20 + }
21 + ],
22 + AttributeDefinitions: [
23 + {
24 + AttributeName: 'ras_id',
25 + AttributeType: 'S', // (S | N | B) for string, number, binary
26 + },
27 + {
28 + AttributeName: 'save_date',
29 + AttributeType: 'S', // (S | N | B) for string, number, binary
30 + }
31 + ],
32 + ProvisionedThroughput: { // required provisioned throughput for the table
33 + ReadCapacityUnits: 1,
34 + WriteCapacityUnits: 1,
35 + }
36 +};
37 +
38 +// var user_data =
39 +// {
40 +// TableName: 'user_data',
41 +// KeySchema: [
42 +// { // Required
43 +// AttributeName: 'user_id',
44 +// KeyType: 'HASH',
45 +// }
46 +// ],
47 +// AttributeDefinitions: [
48 +// {
49 +// AttributeName: 'user_id',
50 +// AttributeType: 'S', // (S | N | B) for string, number, binary
51 +// }
52 +// ],
53 +// ProvisionedThroughput: { // required provisioned throughput for the table
54 +// ReadCapacityUnits: 1,
55 +// WriteCapacityUnits: 1,
56 +// }
57 +// };
58 +
59 +
60 +dynamodb.createTable(pi_data, function(err, data) {
61 + if (err) {
62 + console.log(err); // an error occurred
63 + } else {
64 + console.log(data); // successful response
65 + }
66 +});
67 +
68 +dynamodb.createTable(user_data, function(err, data) {
69 + if (err) {
70 + console.log(err); // an error occurred
71 + } else {
72 + console.log(data); // successful response
73 + }
74 +});
1 +var AWS = require("aws-sdk");
2 +var fs = require('fs');
3 +
4 +AWS.config.update({
5 + region: "ap-northeast-2"
6 +});
7 +
8 +var docClient = new AWS.DynamoDB.DocumentClient();
9 +var pi_table = "pi_data";
10 +var user_table = "user_data";
11 +var dynamodb = new AWS.DynamoDB();
12 +
13 +function get_last_weight(ras_id,cb){
14 + params = {
15 + TableName : pi_table,
16 + ExpressionAttributeValues: {
17 + ":ras_id": {
18 + S: ras_id
19 + }
20 + },
21 + KeyConditionExpression : "ras_id = :ras_id",
22 + "ScanIndexForward":false,
23 + "Limit" : 1,
24 + }
25 + console.log(ras_id)
26 + dynamodb.query(params, function(err, data) {
27 + if (err) {
28 + console.error("Unable to read item. Error JSON:", JSON.stringify(err, null, 2));
29 + } else {
30 + console.log(data.Items[0])
31 + var last_weight = data.Items[0].weight.N
32 + console.log("Last Weight : ",last_weight)
33 + cb(last_weight)
34 + }
35 + });
36 +}
37 +
38 +module.exports = {
39 + save_pi_data: function(pi_data,cb){
40 + console.log(pi_data)
41 + get_last_weight(pi_data.ras_id,function(last_weight){
42 + console.log(last_weight)
43 + var diff_weight = pi_data.weight - last_weight;
44 + if(diff_weight < 0) diff_weight = 0;
45 + var date = new Date(pi_data.date)
46 + date = date.getTime().toString()
47 + var params = {
48 + TableName : pi_table,
49 + Item : {
50 + "ras_id" : pi_data.ras_id,
51 + "save_date" : pi_data,
52 + "weight" : Number(pi_data.weight),
53 + "diff" : diff_weight
54 + }
55 + }
56 + docClient.put(params, function(err, data) {
57 + if (err) {
58 + console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2));
59 + cb(false)
60 + } else {
61 + console.log("Added item:", params);
62 + cb(true)
63 + }
64 + });
65 + })
66 + },
67 +
68 + save_app_data: function(app_data,cb){
69 + // var app_data = JSON.parse(app_data);
70 + var params = {
71 + TableName : user_table,
72 + Item : {
73 + "ras_id" : app_data.ras_id,
74 + "user_id" : app_data.user_id
75 + }
76 + }
77 + docClient.put(params, function(err, data) {
78 + if (err) {
79 + console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2));
80 + cb(false)
81 + } else {
82 + console.log("Added item:", params);
83 + cb(true)
84 + }
85 + });
86 + },
87 +
88 + get_user_data: function(ras_id,cb){
89 + // var params = {
90 + // TableName : user_table,
91 + // Key : {
92 + // "user_id" : user_id
93 + // }
94 + // }
95 + // console.log(user_id)
96 + // docClient.get(params, function(err, data) {
97 + // if (err) {
98 + // console.error("Unable to read item. Error JSON:", JSON.stringify(err, null, 2));
99 + // } else {
100 + // console.log("GetItem succeeded:", data);
101 + // console.log(data.Item)
102 + // if(data.Item){
103 + params = {
104 + TableName : pi_table,
105 + ExpressionAttributeValues: {
106 + ":ras_id": { S: ras_id }
107 + },
108 + KeyConditionExpression : "ras_id = :ras_id"
109 + }
110 + dynamodb.query(params, function(err, data) {
111 + if (err) {
112 + console.error("Unable to read item. Error JSON:", JSON.stringify(err, null, 2));
113 + } else {
114 + JSON.stringify(data, null, 2)
115 + // console.log(data.Items)
116 + cb(data.Items)
117 + }
118 + });
119 + // }
120 + // else{
121 + // cb("No User")
122 + // }
123 + // }
124 + // });
125 + },
126 +
127 + get_diff_data: function(user_info,cb){
128 + console.log(user_info)
129 + params = {
130 + TableName : pi_table,
131 + ExpressionAttributeValues: {
132 + ":ras_id": { S: user_info.ras_id},
133 + ":save_date" : {S : user_info.date}
134 + },
135 + KeyConditionExpression : "ras_id = :ras_id and save_date > :save_date",
136 + }
137 + dynamodb.query(params, function(err, data) {
138 + if (err) {
139 + console.error("Unable to read item. Error JSON:", JSON.stringify(err, null, 2));
140 + } else {
141 + JSON.stringify(data, null, 2)
142 + console.log(data.Items)
143 + cb(data.Items)
144 + }
145 + });
146 + }
147 +}
...\ No newline at end of file ...\ No newline at end of file
1 +var AWS = require('aws-sdk');
2 +
3 +AWS.config.update({
4 + region: "ap-northeast-2"
5 +})
6 +
7 +var docClient = new AWS.DynamoDB.DocumentClient();
8 +
9 +function add_data(params){
10 + docClient.put(params, function(err, data) {
11 + if (err) {
12 + console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2));
13 + } else {
14 + console.log("Added item:", params);
15 + }
16 + });
17 +}
18 +async function save_random_data(epoch,start,end){
19 + var start_date = start;
20 + var start_weight = 0;
21 + for(var i =0; i<epoch; i++){
22 + console.log(start_date)
23 + var date = await start_date.getTime() + Math.random() * (end.getTime() - start_date.getTime());
24 + start_date = new Date(date)
25 + if(start_weight == 2000)
26 + start_weight = 0
27 + var weight = await Math.floor(Math.random() * (2000-start_weight))+start_weight+1;
28 + var diff = weight - start_weight
29 + if(start_weight == 0) diff = 0
30 + var params = {
31 + TableName : "pi_data",
32 + Item : {
33 + "ras_id" : "pi1",
34 + "save_date" : date.toString(),
35 + "weight" : weight,
36 + "diff" : diff
37 + }
38 + }
39 + await add_data(params);
40 + start_weight = await weight
41 +
42 + }
43 +}
44 +
45 +save_random_data(10, new Date("2019-12-10"), new Date())
...\ No newline at end of file ...\ No newline at end of file
1 +body {
2 + padding: 50px;
3 + font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
4 +}
5 +
6 +a {
7 + color: #00B7FF;
8 +}
1 +var express = require('express');
2 +var router = express.Router();
3 +var dynamo_access = require('./dynamodb.js')
4 +
5 +
6 +// router.post('/app/save_data',function(req,res,next){
7 +// var body = req.body;
8 +// dynamo_access.save_app_data(body,function(response){
9 +// console.log(response)
10 +// if(response == true) res.status(200).json("Success")
11 +// else res.status(500).json("Fail")
12 +// });
13 +// })
14 +
15 +router.get('/app/get_data/:id',function(req,res,next){
16 + dynamo_access.get_user_data(req.params.id,function(response){
17 + console.log(response)
18 + res.status(200).json(response)
19 + })
20 +})
21 +
22 +router.post('/app/get_diff_data',function(req,res,next){
23 + var body = req.body;
24 + console.log(body);
25 + dynamo_access.get_diff_data(body,function(response){
26 + console.log(response)
27 + res.status(200).json(response)
28 + })
29 +})
30 +
31 +
32 +router.post('/pi/save_data',function(req,res,next){
33 + var body = req.body;
34 + console.log(body);
35 + dynamo_access.save_pi_data(body,function(response){
36 + console.log(response)
37 + if(response == true) res.status(200).json("Success")
38 + else res.status(500).json("Fail")
39 + });
40 +})
41 +module.exports = router;
...\ No newline at end of file ...\ No newline at end of file
1 +extends layout
2 +
3 +block content
4 + h1= message
5 + h2= error.status
6 + pre #{error.stack}
1 +extends layout
2 +
3 +block content
4 + h1= title
5 + p Welcome to #{title}
1 +doctype html
2 +html
3 + head
4 + title= title
5 + link(rel='stylesheet', href='/stylesheets/style.css')
6 + body
7 + block content