diff --git a/quote-server/package.json b/quote-server/package.json index 59d565e..a84502e 100644 --- a/quote-server/package.json +++ b/quote-server/package.json @@ -5,12 +5,17 @@ "type": "module", "main": "server.js", "scripts": { - "start": "node --no-warnings=ExperimentalWarning server.js" + "start": "nodemon server.js" }, "license": "MIT", "keywords": [ "node", "glitch", "express" - ] + ], + "dependencies": { + "express": "^4.19.2", + "node-fetch": "^3.3.2", + "nodemon": "^3.1.0" + } } diff --git a/quote-server/server.js b/quote-server/server.js index 8a51778..d27a5d6 100644 --- a/quote-server/server.js +++ b/quote-server/server.js @@ -3,17 +3,54 @@ //load the 'express' module which makes writing webservers easy import express from "express"; +import fetch from "node-fetch"; //load the quotes JSON -import quotes from "./quotes.json" assert { type: "json" }; +// import quotes from "./quotes.json" assert { type: "json" }; +let quotes = []; +const fetchQuotes = async () => { + try { + const quotesApi = await fetch("https://api.quotable.io/quotes?page=1"); + const quotesData = await quotesApi.json(); + quotes = quotesData.results; + } catch (error) { + console.error("Error fetching quotes:", error); + } +}; +fetchQuotes(); const app = express(); // Now register handlers for some routes: // / - Return some helpful welcome info (text) // /quotes - Should return all quotes (json) // /quotes/random - Should return ONE quote (json) + app.get("/", (request, response) => { response.send("Neill's Quote Server! Ask me for /quotes/random, or /quotes"); }); +app.get("/quotes", (request, response) => { + response.send({ quotes }); + console.log(request.query); +}); +app.get("/quotes/random", (request, response) => { + response.send(pickFromArray(quotes)); +}); +app.get("/quotes/search", (request, response) => { + const searchQuery = request.query.term; + console.log(searchQuery); + const searchQueryCase = searchQuery.toLocaleLowerCase(); + console.log(searchQuery); + + const filteredQuotes = quotes.filter((quote) => { + // console.log(quote.author); + return ( + quote.content.toLocaleLowerCase().includes(searchQueryCase) || + quote.author.toLocaleLowerCase().includes(searchQueryCase) + ); + }); + + response.send(filteredQuotes); +}); + //START OF YOUR CODE... @@ -26,6 +63,7 @@ app.get("/", (request, response) => { const pickFromArray = (arrayofQuotes) => arrayofQuotes[Math.floor(Math.random() * arrayofQuotes.length)]; + //Start our server so that it listens for HTTP requests! const listener = app.listen(3001, () => { console.log("Your app is listening on port " + listener.address().port);