working on XML structure - dummy payload is completed and API call === 200
This commit is contained in:
@@ -1,13 +1,14 @@
|
||||
// inventoryController.js
|
||||
import buildAddItemRequestXML from "../utils/buildAddItemRequestXML.js";
|
||||
import buildAddFixedPriceItemRequestXML from "../utils/buildAddFixedPriceItemRequestXML.js";
|
||||
import fetch from "node-fetch";
|
||||
import fetchEbayUserToken from "../utils/fetchEbayUserToken.js"; // Adjust the import path according to your project structure
|
||||
|
||||
export const addItem = async (req, res) => {
|
||||
const itemDetails = req.body; // Assuming item details are sent in the request body
|
||||
itemDetails.userToken = await fetchEbayUserToken(); // Fetch and add the user token to itemDetails
|
||||
|
||||
const xmlRequest = buildAddItemRequestXML(itemDetails);
|
||||
itemDetails.userToken =
|
||||
"v^1.1#i^1#r^0#I^3#f^0#p^3#t^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";
|
||||
console.log(itemDetails);
|
||||
const xmlRequest = buildAddFixedPriceItemRequestXML(itemDetails);
|
||||
|
||||
try {
|
||||
const response = await fetch("https://api.ebay.com/ws/api.dll", {
|
||||
@@ -15,7 +16,7 @@ export const addItem = async (req, res) => {
|
||||
headers: {
|
||||
"Content-Type": "text/xml",
|
||||
"X-EBAY-API-SITEID": "0",
|
||||
"X-EBAY-API-CALL-NAME": "AddItem",
|
||||
"X-EBAY-API-CALL-NAME": "AddFixedPriceItem",
|
||||
"X-EBAY-API-COMPATIBILITY-LEVEL": "967", // Ensure this is the current compatibility level
|
||||
"X-EBAY-API-APP-NAME": process.env.EBAY_CLIENT_ID,
|
||||
"X-EBAY-API-DEV-NAME": process.env.EBAY_DEV_ID,
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
// routes/dataRoutes.js
|
||||
import express from "express";
|
||||
import { itemLookup } from "../controllers/dataController.js"; // Adjust the import path according to your project structure
|
||||
import { itemLookup } from "../controllers/dataController.js";
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
// Use the itemLookup function from dataController for the GET request to '/item-lookup'
|
||||
router.get("/item-lookup", itemLookup);
|
||||
|
||||
// You can add more data-related routes here in the future
|
||||
|
||||
export default router;
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
// routes/dataRoutes.js
|
||||
import express from "express";
|
||||
import { addItem } from "../controllers/inventoryController.js"; // Adjust the import path according to your project structure
|
||||
import { addItem } from "../controllers/inventoryController.js";
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
// Use the itemLookup function from dataController for the GET request to '/item-lookup'
|
||||
router.get("/add-item", addItem);
|
||||
router.post("/add-item", addItem);
|
||||
|
||||
// You can add more data-related routes here in the future
|
||||
|
||||
|
||||
10
api/routes/itemLookup.js
Normal file
10
api/routes/itemLookup.js
Normal file
@@ -0,0 +1,10 @@
|
||||
// routes/itemLookup.js
|
||||
import express from "express";
|
||||
import itemLookup from "../controllers/itemLookup.js";
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
// Use the itemLookup controller for the POST request to '/item-lookup'
|
||||
router.get("/item-lookup", itemLookup);
|
||||
|
||||
export default router;
|
||||
@@ -1,13 +1,13 @@
|
||||
const buildAddItemRequestXML = (itemDetails) => {
|
||||
const buildAddFixedPriceItemRequestXML = (itemDetails) => {
|
||||
// Constructing the XML payload using template literals
|
||||
return `<?xml version="1.0" encoding="utf-8"?>
|
||||
<AddItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
|
||||
<AddFixedPriceItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
|
||||
<RequesterCredentials>
|
||||
<eBayAuthToken>${itemDetails.userToken}</eBayAuthToken>
|
||||
</RequesterCredentials>
|
||||
<Item>
|
||||
<Title>${itemDetails.title}</Title>
|
||||
<Description><![CDATA[${itemDetails.description}]]></Description>
|
||||
<Description><${itemDetails.description}></Description>
|
||||
<PrimaryCategory>
|
||||
<CategoryID>${itemDetails.categoryID}</CategoryID>
|
||||
</PrimaryCategory>
|
||||
@@ -18,12 +18,17 @@ const buildAddItemRequestXML = (itemDetails) => {
|
||||
<DispatchTimeMax>${itemDetails.dispatchTimeMax}</DispatchTimeMax>
|
||||
<ListingDuration>${itemDetails.listingDuration}</ListingDuration>
|
||||
<ListingType>${itemDetails.listingType}</ListingType>
|
||||
<PaymentMethods>${itemDetails.paymentMethods}</PaymentMethods>
|
||||
<PaymentMethods>
|
||||
<PaymentMethod>${
|
||||
itemDetails.paymentMethods
|
||||
? itemDetails.paymentMethods[0]
|
||||
: "DefaultPaymentMethod"
|
||||
}</PaymentMethod>
|
||||
</PaymentMethods>
|
||||
|
||||
<PayPalEmailAddress>${itemDetails.payPalEmailAddress}</PayPalEmailAddress>
|
||||
<PictureDetails>
|
||||
${itemDetails.imageURLs
|
||||
.map((url) => `<PictureURL>${url}</PictureURL>`)
|
||||
.join("")}
|
||||
<PictureURL>${itemDetails.imageURLs}</PictureURL>
|
||||
</PictureDetails>
|
||||
<PostalCode>${itemDetails.postalCode}</PostalCode>
|
||||
<Quantity>${itemDetails.quantity}</Quantity>
|
||||
@@ -52,7 +57,7 @@ const buildAddItemRequestXML = (itemDetails) => {
|
||||
</ShippingDetails>
|
||||
<Site>${itemDetails.site}</Site>
|
||||
</Item>
|
||||
</AddItemRequest>`;
|
||||
</AddFixedPriceItemRequest>`;
|
||||
};
|
||||
|
||||
export default buildAddItemRequestXML;
|
||||
export default buildAddFixedPriceItemRequestXML;
|
||||
Reference in New Issue
Block a user