From e216ef2c412b407d74371d055881dd96695e9d64 Mon Sep 17 00:00:00 2001 From: Christo Grabowski Date: Tue, 7 Feb 2023 14:55:37 -0600 Subject: [PATCH] connected to OpenData solar system API for planetary body info --- package-lock.json | 56 +++++++++++++++++++++++++++++++ package.json | 1 + public/sun.jpeg | Bin 0 -> 10331 bytes src/App.js | 18 ++++++++++ src/components/InfoCard/index.js | 2 ++ src/functions/normalizeData.js | 12 +++++++ 6 files changed, 89 insertions(+) create mode 100644 public/sun.jpeg create mode 100644 src/functions/normalizeData.js diff --git a/package-lock.json b/package-lock.json index c51e998..782d911 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "axios": "^1.3.2", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.8.1", @@ -4962,6 +4963,29 @@ "node": ">=4" } }, + "node_modules/axios": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.2.tgz", + "integrity": "sha512-1M3O703bYqYuPhbHeya5bnhpYVsDDRyQSabNja04mZtboLNSuZ4YrltestrLXfHgmzua4TpUqRiVKbiQuo2epw==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/axobject-query": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", @@ -13934,6 +13958,11 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -20600,6 +20629,28 @@ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.3.tgz", "integrity": "sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==" }, + "axios": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.2.tgz", + "integrity": "sha512-1M3O703bYqYuPhbHeya5bnhpYVsDDRyQSabNja04mZtboLNSuZ4YrltestrLXfHgmzua4TpUqRiVKbiQuo2epw==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, "axobject-query": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", @@ -26921,6 +26972,11 @@ } } }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", diff --git a/package.json b/package.json index 3a96744..99540fc 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "axios": "^1.3.2", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.8.1", diff --git a/public/sun.jpeg b/public/sun.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..d731c1e71f840cad7089c9b7758f8d4d62fdf12b GIT binary patch literal 10331 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 { + return axios.get("https://api.le-systeme-solaire.net/rest/bodies/") + .then((response) => setData(normalizeSolarSystemData(response.data))) + } + + useEffect(() => { + fetchData() + }, []) + + console.log(data) + return ( <> diff --git a/src/components/InfoCard/index.js b/src/components/InfoCard/index.js index 2ee660b..119cbdb 100644 --- a/src/components/InfoCard/index.js +++ b/src/components/InfoCard/index.js @@ -12,6 +12,8 @@ const InfoCard = () => { return navigate('/') } + + return (
diff --git a/src/functions/normalizeData.js b/src/functions/normalizeData.js new file mode 100644 index 0000000..8ff653a --- /dev/null +++ b/src/functions/normalizeData.js @@ -0,0 +1,12 @@ +const normalizeSolarSystemData = (data) => { + let dataObject = {} + + data.bodies.forEach(body => { + dataObject[body.englishName] = body + }) + + return dataObject + +} + +export default normalizeSolarSystemData;