From 82e0de186bab8903e16b8b9ac56704295ab25090 Mon Sep 17 00:00:00 2001 From: Andrii-Mysheniuk Date: Wed, 8 May 2024 11:23:24 +0100 Subject: [PATCH] add task solution --- index.js | 25 ++++++++++++++++--- package-lock.json | 62 ++++++++++++++++++++++++++++++++--------------- package.json | 4 ++- 3 files changed, 68 insertions(+), 23 deletions(-) diff --git a/index.js b/index.js index 5d6a968..70dcf42 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,23 @@ -require('dotenv').config(); +import dotenv from 'dotenv'; +dotenv.config(); +import fetch from 'node-fetch'; -// Print out value of API key stored in .env file -console.log(process.env.API_KEY) \ No newline at end of file +async function getImage(query) { + const endpoint = `https://api.giphy.com/v1/gifs/search?api_key=${process.env.API_KEY}&q=${query}&limit=25&offset=0&rating=g&lang=en`; + + try { + const response = await fetch(endpoint); + const data = await response.json(); + + console.log(data.data[0].images.original) + + const gifUrl = data.data[0].images.original.url; + console.log("GIF URL:", gifUrl); + return gifUrl; + } catch (error) { + console.error("Error fetching GIF:", error); + return null; + } +} + +getImage("cats"); diff --git a/package-lock.json b/package-lock.json index 92d7c0f..0ef9784 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,31 +1,55 @@ { "name": "async-giphy", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "async-giphy", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "dotenv": "^16.0.3" - } - }, - "node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", - "engines": { - "node": ">=12" - } - } - }, "dependencies": { + "data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" + }, "dotenv": { "version": "16.0.3", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" + }, + "fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "requires": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + } + }, + "formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "requires": { + "fetch-blob": "^3.1.2" + } + }, + "node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" + }, + "node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, + "web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==" } } } diff --git a/package.json b/package.json index 68fbc35..fa1aa9a 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "1.0.0", "description": "Who doesn't love a good gif? ![](https://media.giphy.com/media/cJMlR1SsCSkUjVY3iK/giphy.gif)", "main": "index.js", + "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, @@ -18,6 +19,7 @@ }, "homepage": "https://github.com/MultiverseLearningProducts/Async-Giphy#readme", "dependencies": { - "dotenv": "^16.0.3" + "dotenv": "^16.0.3", + "node-fetch": "^3.3.2" } }