structured API with controllersroutes

This commit is contained in:
2024-03-21 11:27:19 -05:00
parent 2606b59a8c
commit 02a67bd15f
20 changed files with 2458 additions and 99 deletions

View File

@@ -1,73 +1,18 @@
const express = require("express");
const cors = require("cors");
const fetch = require("node-fetch"); // Ensure you have 'node-fetch' installed
// server.js
import express from "express";
import cors from "cors";
import dotenv from "dotenv";
import itemLookupRoute from "./routes/itemLookup.js"; // Named after the route file
dotenv.config();
const app = express();
app.use(cors());
app.use(express.json());
const fetchToken = async () => {
const ebayClientId = process.env.EBAY_CLIENT_ID; // Replace with your eBay App ID (Client ID)
const ebayClientSecret = process.env.EBAY_CLIENT_SECRET; // Replace with your eBay Cert ID (Client Secret)
const credentials = Buffer.from(
`${ebayClientId}:${ebayClientSecret}`
).toString("base64");
try {
const response = await fetch(
"https://api.ebay.com/identity/v1/oauth2/token",
{
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
Authorization: `Basic ${credentials}`,
},
body: "grant_type=client_credentials&scope=https%3A%2F%2Fapi.ebay.com%2Foauth%2Fapi_scope",
}
);
if (!response.ok) throw new Error("Failed to fetch eBay OAuth token");
const data = await response.json();
return data.access_token;
} catch (error) {
console.error("Error fetching eBay OAuth token:", error);
res.status(500).send("Internal Server Error");
}
};
app.post("/submit", async (req, res) => {
const productCode = req.body.productCode;
const oauthToken = await fetchToken();
console.log(productCode);
try {
const response = await fetch(
`https://api.ebay.com/buy/browse/v1/item_summary/search?gtin=${productCode}`,
{
method: "GET",
headers: {
Authorization: `Bearer ${oauthToken}`,
"Content-Type": "application/json",
},
}
);
console.log(response);
if (!response.ok)
throw new Error("Failed to fetch data from eBay Browse API");
const data = await response.json();
data.itemSummaries.forEach((item) => {
console.log(item.price, item.condition);
});
res.status(200).send("Data fetched successfully");
} catch (error) {
console.error("Error fetching data from eBay Browse API:", error);
res.status(500).send("Internal Server Error");
}
// Proceed with your logic here using the token...
});
// Use the itemLookupRoute with a base path, e.g., '/api'
app.use("/api", itemLookupRoute);
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));