itemLookUp complete and addItem endpoint

This commit is contained in:
2024-03-21 15:18:06 -05:00
parent ab2b011580
commit 191164f4cc
7 changed files with 162 additions and 4 deletions

View File

@@ -0,0 +1,58 @@
const buildAddItemRequestXML = (itemDetails) => {
// Constructing the XML payload using template literals
return `<?xml version="1.0" encoding="utf-8"?>
<AddItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<eBayAuthToken>${itemDetails.userToken}</eBayAuthToken>
</RequesterCredentials>
<Item>
<Title>${itemDetails.title}</Title>
<Description><![CDATA[${itemDetails.description}]]></Description>
<PrimaryCategory>
<CategoryID>${itemDetails.categoryID}</CategoryID>
</PrimaryCategory>
<StartPrice>${itemDetails.startPrice}</StartPrice>
<ConditionID>${itemDetails.conditionID}</ConditionID>
<Country>${itemDetails.country}</Country>
<Currency>${itemDetails.currency}</Currency>
<DispatchTimeMax>${itemDetails.dispatchTimeMax}</DispatchTimeMax>
<ListingDuration>${itemDetails.listingDuration}</ListingDuration>
<ListingType>${itemDetails.listingType}</ListingType>
<PaymentMethods>${itemDetails.paymentMethods}</PaymentMethods>
<PayPalEmailAddress>${itemDetails.payPalEmailAddress}</PayPalEmailAddress>
<PictureDetails>
${itemDetails.imageURLs
.map((url) => `<PictureURL>${url}</PictureURL>`)
.join("")}
</PictureDetails>
<PostalCode>${itemDetails.postalCode}</PostalCode>
<Quantity>${itemDetails.quantity}</Quantity>
<ReturnPolicy>
<ReturnsAcceptedOption>${
itemDetails.returnsAcceptedOption
}</ReturnsAcceptedOption>
<RefundOption>${itemDetails.refundOption}</RefundOption>
<ReturnsWithinOption>${
itemDetails.returnsWithinOption
}</ReturnsWithinOption>
<Description>${itemDetails.returnPolicyDescription}</Description>
<ShippingCostPaidByOption>${
itemDetails.shippingCostPaidByOption
}</ShippingCostPaidByOption>
</ReturnPolicy>
<ShippingDetails>
<ShippingType>${itemDetails.shippingType}</ShippingType>
<ShippingServiceOptions>
<ShippingServicePriority>1</ShippingServicePriority>
<ShippingService>${itemDetails.shippingService}</ShippingService>
<ShippingServiceCost>${
itemDetails.shippingServiceCost
}</ShippingServiceCost>
</ShippingServiceOptions>
</ShippingDetails>
<Site>${itemDetails.site}</Site>
</Item>
</AddItemRequest>`;
};
export default buildAddItemRequestXML;

View File

@@ -1,6 +1,7 @@
// Need to figoure out expiration and make sure to cycle this appropriately to avoid unnecessary calls
import fetch from "node-fetch";
const fetchEbayToken = async () => {
const fetchEbayReadToken = async () => {
const ebayClientId = process.env.EBAY_CLIENT_ID;
const ebayClientSecret = process.env.EBAY_CLIENT_SECRET;
const credentials = Buffer.from(
@@ -35,4 +36,4 @@ const fetchEbayToken = async () => {
}
};
export default fetchEbayToken;
export default fetchEbayReadToken;

View File

@@ -0,0 +1,41 @@
import fetch from "node-fetch";
const fetchEbayUserToken = async (authorizationCode) => {
const clientId = process.env.EBAY_CLIENT_ID;
const clientSecret = process.env.EBAY_CLIENT_SECRET;
const redirectUri = process.env.EBAY_REDIRECT_URI; // Make sure this matches the URI registered with eBay
const credentials = Buffer.from(`${clientId}:${clientSecret}`).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=authorization_code&code=${authorizationCode}&redirect_uri=${encodeURIComponent(
redirectUri
)}`,
}
);
if (!response.ok) {
const errorBody = await response.text();
throw new Error(
`Failed to fetch eBay user token: ${response.status} ${response.statusText} - ${errorBody}`
);
}
const data = await response.json();
return data.access_token; // This is the User access token
} catch (error) {
console.error("Error fetching eBay user token:", error);
throw error;
}
};
export default fetchEbayUserToken;