From 020e0466c1883b791716fbfecefe416cbec34c29 Mon Sep 17 00:00:00 2001 From: sanadriu Date: Fri, 10 Dec 2021 17:59:27 +0100 Subject: [PATCH 1/4] Phase 1 done --- package-lock.json | 459 ++++++++++++++++++++------------------ package.json | 49 ++-- src/app.js | 64 ++++++ src/dummy.js | 29 +++ src/img/app-view.png | Bin 120600 -> 0 bytes src/models/personModel.js | 30 +++ src/moviedb.js | 38 ---- src/utils/option.js | 15 ++ src/utils/request.js | 30 +++ src/views/personView.js | 74 ++++++ 10 files changed, 514 insertions(+), 274 deletions(-) create mode 100644 src/app.js create mode 100644 src/dummy.js delete mode 100644 src/img/app-view.png create mode 100644 src/models/personModel.js delete mode 100755 src/moviedb.js create mode 100644 src/utils/option.js create mode 100644 src/utils/request.js create mode 100644 src/views/personView.js diff --git a/package-lock.json b/package-lock.json index fcf3619..965d929 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,76 +4,131 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bl": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.0.0.tgz", + "integrity": "sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ==", + "requires": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.0.tgz", + "integrity": "sha512-/duVOqst+luxCQRKEo4bNxinsOQtMP80ZYm7mMqzuh5PociNL0PvmHFvREJ9ueYL2TxlHjBcmLCdmocx9Vg+IQ==" + }, + "cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } + "restore-cursor": "^4.0.0" + } + }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==" + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" } }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, "commander": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.1.0.tgz", - "integrity": "sha512-wl7PNrYWd2y5mp1OK/LhTlv8Ff4kQJQRXXAvF+uU/TPNiVJUxZLRYGj/B0y/lPGAVcSbJqH2Za/cvHmrPMC8mA==" + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "requires": { + "clone": "^1.0.2" + } }, "dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" }, "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, "is-docker": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", - "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==" + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + }, + "is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==" + }, + "is-unicode-supported": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.1.0.tgz", + "integrity": "sha512-lDcxivp8TJpLG75/DpatAqNzOpDPSpED8XNtrpBHTdQ2InQ1PbW78jhwSxyxhhu+xbVSast2X38bwj8atwoUQA==" }, "is-wsl": { "version": "2.2.0", @@ -88,191 +143,166 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, + "log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "requires": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "dependencies": { + "chalk": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.0.tgz", + "integrity": "sha512-/duVOqst+luxCQRKEo4bNxinsOQtMP80ZYm7mMqzuh5PociNL0PvmHFvREJ9ueYL2TxlHjBcmLCdmocx9Vg+IQ==" + } + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, "node-notifier": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.0.tgz", - "integrity": "sha512-46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-10.0.0.tgz", + "integrity": "sha512-ZTqP90y1eyb2xAZTa7j4AlAayTwh6cL8mn0nlJhLDq8itXGnJUmQGYOnpaMUvqZVfGo0vhU7KZ3HtDW6CT2SiQ==", "requires": { "growly": "^1.3.0", "is-wsl": "^2.2.0", - "semver": "^7.3.2", + "semver": "^7.3.5", "shellwords": "^0.1.1", - "uuid": "^8.3.0", + "uuid": "^8.3.2", "which": "^2.0.2" } }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, "ora": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.1.0.tgz", - "integrity": "sha512-9tXIMPvjZ7hPTbk8DFq1f7Kow/HU/pQYB60JbNq+QnGwcyhWVZaQ4hM9zQDEsPxw/muLpgiHSaumUZxCAmod/w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-6.0.1.tgz", + "integrity": "sha512-TDdKkKHdWE6jo/6pIa5U5AWcSVfpNRFJ8sdRJpioGNVPLAzZzHs/N+QhUfF7ZbyoC+rnDuNTKzeDJUbAza9g4g==", "requires": { - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.4.0", - "is-interactive": "^1.0.0", - "log-symbols": "^4.0.0", - "mute-stream": "0.0.8", - "strip-ansi": "^6.0.0", + "bl": "^5.0.0", + "chalk": "^4.1.2", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.6.0", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.1.0", + "log-symbols": "^5.0.0", + "strip-ansi": "^7.0.1", "wcwidth": "^1.0.1" }, "dependencies": { - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.4.0.tgz", - "integrity": "sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA==" - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "requires": { - "clone": "^1.0.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" - }, - "log-symbols": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", - "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", - "requires": { - "chalk": "^4.0.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "requires": { - "defaults": "^1.0.3" - } } } }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } }, "shellwords": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" }, + "signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, "uuid": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", - "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==" + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "requires": { + "defaults": "^1.0.3" + } }, "which": { "version": "2.0.2", @@ -281,6 +311,11 @@ "requires": { "isexe": "^2.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } } diff --git a/package.json b/package.json index f20c9c6..9f21fed 100644 --- a/package.json +++ b/package.json @@ -1,26 +1,27 @@ { - "name": "node-moviedb-cli", - "version": "1.0.0", - "description": "Assembler School: Node.js MovieDB CLI", - "keywords": [ - "node.js", - "cli app", - "assembler school" - ], - "author": "Dani Lucaci ", - "license": "MIT", - "private": true, - "main": "src/moviedb.js", - "repository": { - "type": "git", - "url": "https://github.com/assembler-school/node-moviedb-cli.git" - }, - "scripts": {}, - "dependencies": { - "chalk": "^4.1.0", - "commander": "^6.1.0", - "dotenv": "^8.2.0", - "node-notifier": "^8.0.0", - "ora": "^5.1.0" - } + "type": "module", + "name": "node-moviedb-cli", + "version": "1.0.0", + "description": "Assembler School: Node.js MovieDB CLI", + "keywords": [ + "node.js", + "cli app", + "assembler school" + ], + "author": "Dani Lucaci ", + "license": "MIT", + "private": true, + "main": "src/moviedb.js", + "repository": { + "type": "git", + "url": "https://github.com/assembler-school/node-moviedb-cli.git" + }, + "scripts": {}, + "dependencies": { + "chalk": "^5.0.0", + "commander": "^8.3.0", + "dotenv": "^10.0.0", + "node-notifier": "^10.0.0", + "ora": "^6.0.1" + } } diff --git a/src/app.js b/src/app.js new file mode 100644 index 0000000..9ddc92e --- /dev/null +++ b/src/app.js @@ -0,0 +1,64 @@ +import { config } from "dotenv"; +import { Command } from "commander"; +import { default as ora } from "ora"; + +config(); + +import { getPerson, getPersons } from "./models/personModel.js"; +import { showPerson, showPersons } from "./views/personView.js"; +import { optionParseInteger } from "./utils/option.js"; + +const program = new Command(); + +program.version("0.0.1", "-v, --version", "Display the current version"); + +program + .command("get-person") + .description("Make a network request to fetch most popular persons") + .requiredOption("-i, --id ", "The id of the person", optionParseInteger) + .action(async (options) => { + const { id } = options; + const loader = ora({ + text: "Fetching person details...", + spinner: "dots", + }); + + try { + loader.start(); + + const data = await getPerson(id); + + showPerson(data); + + loader.succeed("Person details loaded successfully"); + } catch (error) { + loader.fail(error); + } + }); + +program + .command("get-persons") + .description("Make a network request to fetch most popular persons") + .requiredOption("-p, --popular", "Fetch the popular persons") + .requiredOption("--page ", "The page of persons data results to fetch", optionParseInteger) + .action(async (options) => { + const { page } = options; + const loader = ora({ + text: "Fetching popular persons' data...", + spinner: "dots", + }); + + try { + loader.start(); + + const data = await getPersons(page); + + showPersons(data); + + loader.succeed("Popular persons' data loaded successfully"); + } catch (error) { + loader.fail(error); + } + }); + +program.parse(process.argv); diff --git a/src/dummy.js b/src/dummy.js new file mode 100644 index 0000000..0601e97 --- /dev/null +++ b/src/dummy.js @@ -0,0 +1,29 @@ +var https = require("https"); +var fs = require("fs"); + +var options = { + method: "GET", + hostname: "api.themoviedb.org", + path: "/3/person/popular?page=1&api_key=bf6096fe8a74b78fb23e8caade7415cb", + headers: {}, + maxRedirects: 20, +}; + +var req = https.request(options, function (res) { + var chunks = []; + + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function (chunk) { + var body = Buffer.concat(chunks); + console.log(body.toString()); + }); + + res.on("error", function (error) { + console.error(error); + }); +}); + +req.end(); diff --git a/src/img/app-view.png b/src/img/app-view.png deleted file mode 100644 index 39741715e926a660f9cafab44ef5110e0ac0585f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120600 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

L)QGskVQXtvcu)NW-`#-e3bH7M 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 LRbG@zy$bjr?fTj( diff --git a/src/models/personModel.js b/src/models/personModel.js new file mode 100644 index 0000000..5112123 --- /dev/null +++ b/src/models/personModel.js @@ -0,0 +1,30 @@ +import request from "../utils/request.js"; + +async function getPerson(id) { + const options = { + method: "GET", + hostname: process.env.API_BASE_URL, + path: `/${process.env.API_VERSION}/person/${id}?api_key=${process.env.API_KEY}`, + maxRedirects: 20, + }; + + return await request(options); +} + +async function getPersons(page) { + const options = { + method: "GET", + hostname: process.env.API_BASE_URL, + path: `/${process.env.API_VERSION}/person/popular?page=${page}&api_key=${process.env.API_KEY}`, + maxRedirects: 20, + }; + + return await request(options); +} + +export { getPerson, getPersons }; + +// module.exports = { +// getPerson, +// getPersons, +// }; diff --git a/src/moviedb.js b/src/moviedb.js deleted file mode 100755 index dd5591a..0000000 --- a/src/moviedb.js +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env node - -const { Command } = require("commander"); - -const program = new Command(); -program.version("0.0.1"); - -program - .command("get-persons") - .description("Make a network request to fetch most popular persons") - .action(function handleAction() { - console.log("hello-world"); - }); - -program - .command("get-person") - .description("Make a network request to fetch the data of a single person") - .action(function handleAction() { - console.log("hello-world"); - }); - -program - .command("get-movies") - .description("Make a network request to fetch movies") - .action(function handleAction() { - console.log("hello-world"); - }); - -program - .command("get-movie") - .description("Make a network request to fetch the data of a single person") - .action(function handleAction() { - console.log("hello-world"); - }); - -// error on unknown commands - -program.parse(process.argv); diff --git a/src/utils/option.js b/src/utils/option.js new file mode 100644 index 0000000..3811bc4 --- /dev/null +++ b/src/utils/option.js @@ -0,0 +1,15 @@ +import { InvalidArgumentError } from "commander"; + +function optionParseInteger(value) { + const number = parseInt(value); + + if (isNaN(number)) throw new InvalidArgumentError("Not an integer value."); + + return number; +} + +export { optionParseInteger }; + +// module.exports = { +// optionParseInteger, +// }; diff --git a/src/utils/request.js b/src/utils/request.js new file mode 100644 index 0000000..a37535b --- /dev/null +++ b/src/utils/request.js @@ -0,0 +1,30 @@ +import https from "https"; + +function request(options) { + return new Promise((resolve, reject) => { + const chunks = []; + + const req = https.request(options, (res) => { + res.on("data", function (chunk) { + chunks.push(chunk); + }); + + res.on("end", function (chunk) { + var body = Buffer.concat(chunks); + resolve(JSON.parse(body.toString())); + }); + + res.on("error", function (error) { + reject(error); + }); + }); + + req.end(); + }); +} + +export default request; + +// module.exports = { +// request, +// }; diff --git a/src/views/personView.js b/src/views/personView.js new file mode 100644 index 0000000..fb125c7 --- /dev/null +++ b/src/views/personView.js @@ -0,0 +1,74 @@ +import chalk from "chalk"; + +function showPerson(data) { + const { + id, + name, + birthday, + place_of_birth: birthplace, + known_for_department: department, + biography, + also_known_as: aliases, + } = data; + + console.log(); + + console.log(chalk.white("\n----------------------------------------\n")); + console.log(`ID: ${chalk.white(id)}`); + console.log(`Name: ${chalk.blue.bold(name)}`); + console.log(`Birth: ${chalk.white(birthday)} ${chalk.gray("|")} ${chalk.white(birthplace)}`); + console.log(`Department: ${department === "Acting" ? chalk.magenta(department) : chalk.white(department)}`); + console.log(`Biography: ${chalk.blue.bold(biography)}`); + + if (aliases !== undefined) { + console.log("\nAlso known as:\n"); + + aliases.forEach((alias) => { + console.log(`${chalk.white(alias)}`); + }); + } else { + console.log(`\n${chalk.yellow(name)} doesn’t have any alternative names`); + } + + console.log(); +} + +function showPersons(data) { + const persons = data.results || []; + + console.log(); + + persons.forEach((person) => { + const { id, name, known_for_department: department, known_for: movies } = person; + + console.log(chalk.white("\n----------------------------------------\n")); + + console.log(`ID: ${chalk.white(id)}`); + console.log(`Name: ${chalk.blue.bold(name)}`); + console.log(`Department: ${department === "Acting" ? chalk.magenta(department) : chalk.white(department)}`); + + if (movies !== undefined) { + console.log("\nAppearing in movies:\n"); + + movies.forEach((movie) => { + const { id, title, release_date } = movie; + + console.log(`\t${chalk.white("Movie:")}\n`); + console.log(`\tID: ${chalk.white(id)}`); + console.log(`\tRelease date: ${chalk.white(release_date)}`); + console.log(`\tTitle: ${chalk.white(title)}`); + }); + } else { + console.log(chalk.orange(`\n${name} doesn’t appear in any movie`)); + } + }); + + console.log(); +} + +export { showPerson, showPersons }; + +// module.exports = { +// showPerson, +// showPersons, +// }; From ea49cc43fd0a3e76a29705d069abfab09ab85eb2 Mon Sep 17 00:00:00 2001 From: sanadriu Date: Mon, 13 Dec 2021 13:22:34 +0100 Subject: [PATCH 2/4] Saving changes --- src/app.js | 82 +++++++++++++++++++++++++++++++++++++-- src/dummy.js | 29 -------------- src/models/movieModel.js | 47 ++++++++++++++++++++++ src/models/personModel.js | 5 --- src/utils/request.js | 13 ++----- src/views/movieView.js | 60 ++++++++++++++++++++++++++++ src/views/personView.js | 19 ++++----- 7 files changed, 197 insertions(+), 58 deletions(-) delete mode 100644 src/dummy.js create mode 100644 src/models/movieModel.js create mode 100644 src/views/movieView.js diff --git a/src/app.js b/src/app.js index 9ddc92e..16fef15 100644 --- a/src/app.js +++ b/src/app.js @@ -1,11 +1,13 @@ import { config } from "dotenv"; -import { Command } from "commander"; -import { default as ora } from "ora"; config(); +import { Command } from "commander"; +import { default as ora } from "ora"; import { getPerson, getPersons } from "./models/personModel.js"; +import { getMovie, getMovieReviews, getPlayingMovies, getPopularMovies } from "./models/movieModel.js"; import { showPerson, showPersons } from "./views/personView.js"; +import { showMovie, showMovies } from "./views/movieView.js"; import { optionParseInteger } from "./utils/option.js"; const program = new Command(); @@ -28,11 +30,13 @@ program const data = await getPerson(id); + if (data.status_message) throw new Error(data.status_message); + showPerson(data); loader.succeed("Person details loaded successfully"); } catch (error) { - loader.fail(error); + loader.fail(error.message); } }); @@ -53,11 +57,81 @@ program const data = await getPersons(page); + if (data.status_message) throw new Error(data.status_message); + showPersons(data); loader.succeed("Popular persons' data loaded successfully"); } catch (error) { - loader.fail(error); + loader.fail(error.message); + } + }); + +program + .command("get-movies") + .description("Make a network request to fetch movies") + .requiredOption("--page ", "The page of movies data results to fetch", optionParseInteger) + .option("-p, --popular", "Fetch the popular movies") + .option("-n, --now-playing", "Fetch the movies that are playing now") + .action(async (options) => { + const { page, nowPlaying } = options; + const loader = ora({ + text: "Fetching the movies data...", + spinner: "dots", + }); + + try { + loader.start(); + + const data = nowPlaying ? await getPlayingMovies(page) : await getPopularMovies(page); + + if (data.status_message) throw new Error(data.status_message); + + showMovies(data); + + loader.succeed( + nowPlaying ? " Movies playing now data loaded successfully" : "Popular movies data loaded successfully" + ); + } catch (error) { + loader.fail(error.message); + } + }); + +program + .command("get-movie") + .description("Make a network request to fetch movie details") + .requiredOption("-i, --id ", "The id of the person", optionParseInteger) + .option("--page ", "Fetch the movie reviews", optionParseInteger, 1) + .option("--reviews", "Fetch the movie reviews") + .action(async (options) => { + const { id, reviews, page } = options; + const loader = ora({ + text: "Fetching the movie data...", + spinner: "dots", + }); + + try { + loader.start(); + + if (reviews) { + const data = await getMovieReviews(id, page); + + if (data.status_message) throw new Error(data.status_message); + + console.log(data); + + loader.succeed("Movie reviews loaded successfully"); + } else { + const data = await getMovie(id); + + if (data.status_message) throw new Error(data.status_message); + + showMovie(data); + + loader.succeed("Movie details loaded successfully"); + } + } catch (error) { + loader.fail(error.message); } }); diff --git a/src/dummy.js b/src/dummy.js deleted file mode 100644 index 0601e97..0000000 --- a/src/dummy.js +++ /dev/null @@ -1,29 +0,0 @@ -var https = require("https"); -var fs = require("fs"); - -var options = { - method: "GET", - hostname: "api.themoviedb.org", - path: "/3/person/popular?page=1&api_key=bf6096fe8a74b78fb23e8caade7415cb", - headers: {}, - maxRedirects: 20, -}; - -var req = https.request(options, function (res) { - var chunks = []; - - res.on("data", function (chunk) { - chunks.push(chunk); - }); - - res.on("end", function (chunk) { - var body = Buffer.concat(chunks); - console.log(body.toString()); - }); - - res.on("error", function (error) { - console.error(error); - }); -}); - -req.end(); diff --git a/src/models/movieModel.js b/src/models/movieModel.js new file mode 100644 index 0000000..ed88014 --- /dev/null +++ b/src/models/movieModel.js @@ -0,0 +1,47 @@ +import request from "../utils/request.js"; + +async function getMovie(id) { + const options = { + method: "GET", + hostname: process.env.API_BASE_URL, + path: `/${process.env.API_VERSION}/movie/${id}?api_key=${process.env.API_KEY}`, + maxRedirects: 20, + }; + + return await request(options); +} + +async function getMovieReviews(id, page) { + const options = { + method: "GET", + hostname: process.env.API_BASE_URL, + path: `/${process.env.API_VERSION}/movie/${id}/reviews?page=${page}&api_key=${process.env.API_KEY}`, + maxRedirects: 20, + }; + + return await request(options); +} + +async function getPopularMovies(page) { + const options = { + method: "GET", + hostname: process.env.API_BASE_URL, + path: `/${process.env.API_VERSION}/movie/popular?page=${page}&api_key=${process.env.API_KEY}`, + maxRedirects: 20, + }; + + return await request(options); +} + +async function getPlayingMovies(page) { + const options = { + method: "GET", + hostname: process.env.API_BASE_URL, + path: `/${process.env.API_VERSION}/movie/now_playing?page=${page}&api_key=${process.env.API_KEY}`, + maxRedirects: 20, + }; + + return await request(options); +} + +export { getMovie, getMovieReviews, getPopularMovies, getPlayingMovies }; diff --git a/src/models/personModel.js b/src/models/personModel.js index 5112123..6a2a68e 100644 --- a/src/models/personModel.js +++ b/src/models/personModel.js @@ -23,8 +23,3 @@ async function getPersons(page) { } export { getPerson, getPersons }; - -// module.exports = { -// getPerson, -// getPersons, -// }; diff --git a/src/utils/request.js b/src/utils/request.js index a37535b..ad614d5 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -2,16 +2,15 @@ import https from "https"; function request(options) { return new Promise((resolve, reject) => { - const chunks = []; + let data = ""; const req = https.request(options, (res) => { res.on("data", function (chunk) { - chunks.push(chunk); + data += chunk; }); - res.on("end", function (chunk) { - var body = Buffer.concat(chunks); - resolve(JSON.parse(body.toString())); + res.on("end", function () { + resolve(JSON.parse(data)); }); res.on("error", function (error) { @@ -24,7 +23,3 @@ function request(options) { } export default request; - -// module.exports = { -// request, -// }; diff --git a/src/views/movieView.js b/src/views/movieView.js new file mode 100644 index 0000000..0fc58fd --- /dev/null +++ b/src/views/movieView.js @@ -0,0 +1,60 @@ +import chalk from "chalk"; + +function showMovies(data) { + const movies = data.results || []; + + console.log(); + + movies.forEach((movie) => { + const { id, title, release_date } = movie; + + console.log(chalk.white("----------------------------------------\n")); + console.log(chalk.white("Movie:\n")); + console.log(`ID: ${chalk.white(id)}`); + console.log(`Title: ${chalk.blue.bold(title)}`); + console.log(`Release date: ${chalk.white(release_date)}`); + console.log(); + }); +} + +function showMovie(data) { + const { id, title, release_date, runtime, vote_count, overview, genres, spoken_languages } = data; + + console.log(); + + console.log(chalk.white("----------------------------------------\n")); + console.log(chalk.white("Movie:\n")); + console.log(`ID: ${chalk.white(id)}`); + console.log(`Title: ${chalk.blue.bold(title)}`); + console.log(`Release date: ${chalk.white(release_date)}`); + console.log(`Runtime ${chalk.white(runtime)}`); + console.log(`Vote count: ${chalk.white(vote_count)}`); + console.log(`Overview: ${chalk.white(overview)}`); + console.log(); + + if (genres !== undefined) { + console.log("Genres:\n"); + + genres.forEach((genre) => { + console.log(chalk.white(genre.name)); + }); + } else { + console.log(chalk.yellow("The movie doesn’t have a declared genre")); + } + + console.log(); + + if (spoken_languages !== undefined) { + console.log("Languages:\n"); + + spoken_languages.forEach((spoken_language) => { + console.log(chalk.white(spoken_language.name)); + }); + } else { + console.log(chalk.yellow("The movie doesn’t have a declared language")); + } + + console.log(); +} + +export { showMovie, showMovies }; diff --git a/src/views/personView.js b/src/views/personView.js index fb125c7..38cefab 100644 --- a/src/views/personView.js +++ b/src/views/personView.js @@ -13,21 +13,22 @@ function showPerson(data) { console.log(); - console.log(chalk.white("\n----------------------------------------\n")); + console.log(chalk.white("----------------------------------------\n")); console.log(`ID: ${chalk.white(id)}`); console.log(`Name: ${chalk.blue.bold(name)}`); console.log(`Birth: ${chalk.white(birthday)} ${chalk.gray("|")} ${chalk.white(birthplace)}`); console.log(`Department: ${department === "Acting" ? chalk.magenta(department) : chalk.white(department)}`); console.log(`Biography: ${chalk.blue.bold(biography)}`); + console.log(); if (aliases !== undefined) { - console.log("\nAlso known as:\n"); + console.log("Also known as:\n"); aliases.forEach((alias) => { console.log(`${chalk.white(alias)}`); }); } else { - console.log(`\n${chalk.yellow(name)} doesn’t have any alternative names`); + console.log(`${chalk.yellow(name)} doesn’t have any alternative names`); } console.log(); @@ -41,14 +42,15 @@ function showPersons(data) { persons.forEach((person) => { const { id, name, known_for_department: department, known_for: movies } = person; - console.log(chalk.white("\n----------------------------------------\n")); + console.log(chalk.white("----------------------------------------\n")); console.log(`ID: ${chalk.white(id)}`); console.log(`Name: ${chalk.blue.bold(name)}`); console.log(`Department: ${department === "Acting" ? chalk.magenta(department) : chalk.white(department)}`); + console.log(); if (movies !== undefined) { - console.log("\nAppearing in movies:\n"); + console.log("Appearing in movies:\n"); movies.forEach((movie) => { const { id, title, release_date } = movie; @@ -59,7 +61,7 @@ function showPersons(data) { console.log(`\tTitle: ${chalk.white(title)}`); }); } else { - console.log(chalk.orange(`\n${name} doesn’t appear in any movie`)); + console.log(chalk.orange(`${name} doesn’t appear in any movie`)); } }); @@ -67,8 +69,3 @@ function showPersons(data) { } export { showPerson, showPersons }; - -// module.exports = { -// showPerson, -// showPersons, -// }; From 210c0d8a0bf9c1fa026fa507cb44c823d17027d7 Mon Sep 17 00:00:00 2001 From: sanadriu Date: Mon, 13 Dec 2021 14:41:13 +0100 Subject: [PATCH 3/4] Phase 2 finished --- src/app.js | 4 ++-- src/views/movieView.js | 29 ++++++++++++++++++++++++++--- src/views/personView.js | 9 ++++----- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/src/app.js b/src/app.js index 16fef15..45a01e4 100644 --- a/src/app.js +++ b/src/app.js @@ -7,7 +7,7 @@ import { default as ora } from "ora"; import { getPerson, getPersons } from "./models/personModel.js"; import { getMovie, getMovieReviews, getPlayingMovies, getPopularMovies } from "./models/movieModel.js"; import { showPerson, showPersons } from "./views/personView.js"; -import { showMovie, showMovies } from "./views/movieView.js"; +import { showMovie, showMovieReviews, showMovies } from "./views/movieView.js"; import { optionParseInteger } from "./utils/option.js"; const program = new Command(); @@ -118,7 +118,7 @@ program if (data.status_message) throw new Error(data.status_message); - console.log(data); + showMovieReviews(data); loader.succeed("Movie reviews loaded successfully"); } else { diff --git a/src/views/movieView.js b/src/views/movieView.js index 0fc58fd..43cd465 100644 --- a/src/views/movieView.js +++ b/src/views/movieView.js @@ -32,7 +32,7 @@ function showMovie(data) { console.log(`Overview: ${chalk.white(overview)}`); console.log(); - if (genres !== undefined) { + if (genres.length) { console.log("Genres:\n"); genres.forEach((genre) => { @@ -44,7 +44,7 @@ function showMovie(data) { console.log(); - if (spoken_languages !== undefined) { + if (spoken_languages.length) { console.log("Languages:\n"); spoken_languages.forEach((spoken_language) => { @@ -57,4 +57,27 @@ function showMovie(data) { console.log(); } -export { showMovie, showMovies }; +function showMovieReviews(data) { + const { page, total_pages, results: reviews } = data; + + console.log(); + + if (reviews.length) { + console.log(chalk.white("----------------------------------------")); + console.log(chalk.white(`Page ${page}/${total_pages}`)); + + reviews.forEach((review) => { + const { author, content } = review; + const reviewText = content.length < 400 ? content : content.slice(0, 400) + "..."; + + console.log(chalk.white("----------------------------------------\n")); + console.log(`Author: ${chalk.blue.bold(author)}`); + console.log(`Content: ${chalk.white(reviewText)}`); + console.log(); + }); + } else { + console.log(chalk.yellow("The movie doesn’t have any reviews")); + } +} + +export { showMovie, showMovies, showMovieReviews }; diff --git a/src/views/personView.js b/src/views/personView.js index 38cefab..ca9329d 100644 --- a/src/views/personView.js +++ b/src/views/personView.js @@ -21,7 +21,7 @@ function showPerson(data) { console.log(`Biography: ${chalk.blue.bold(biography)}`); console.log(); - if (aliases !== undefined) { + if (aliases.length) { console.log("Also known as:\n"); aliases.forEach((alias) => { @@ -49,7 +49,7 @@ function showPersons(data) { console.log(`Department: ${department === "Acting" ? chalk.magenta(department) : chalk.white(department)}`); console.log(); - if (movies !== undefined) { + if (movies.length) { console.log("Appearing in movies:\n"); movies.forEach((movie) => { @@ -59,13 +59,12 @@ function showPersons(data) { console.log(`\tID: ${chalk.white(id)}`); console.log(`\tRelease date: ${chalk.white(release_date)}`); console.log(`\tTitle: ${chalk.white(title)}`); + console.log(); }); } else { - console.log(chalk.orange(`${name} doesn’t appear in any movie`)); + console.log(chalk.yellow(`${name} doesn’t appear in any movie\n`)); } }); - - console.log(); } export { showPerson, showPersons }; From 8d569fa4a1d17c54c94b6562853524cac68d4ab3 Mon Sep 17 00:00:00 2001 From: sanadriu Date: Tue, 14 Dec 2021 09:53:22 +0100 Subject: [PATCH 4/4] Fixed showPersons: undefined movies now do not display --- package.json | 2 +- src/utils/option.js | 4 ---- src/views/personView.js | 5 ++++- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 9f21fed..d393839 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "author": "Dani Lucaci ", "license": "MIT", "private": true, - "main": "src/moviedb.js", + "main": "src/app.js", "repository": { "type": "git", "url": "https://github.com/assembler-school/node-moviedb-cli.git" diff --git a/src/utils/option.js b/src/utils/option.js index 3811bc4..facbd72 100644 --- a/src/utils/option.js +++ b/src/utils/option.js @@ -9,7 +9,3 @@ function optionParseInteger(value) { } export { optionParseInteger }; - -// module.exports = { -// optionParseInteger, -// }; diff --git a/src/views/personView.js b/src/views/personView.js index ca9329d..d79abf9 100644 --- a/src/views/personView.js +++ b/src/views/personView.js @@ -40,7 +40,10 @@ function showPersons(data) { console.log(); persons.forEach((person) => { - const { id, name, known_for_department: department, known_for: movies } = person; + const { id, name, known_for_department: department, known_for } = person; + const movies = known_for.filter((item) => { + return item.title !== undefined; + }); console.log(chalk.white("----------------------------------------\n"));