@megaads/wm
Version:
To install the library, use npm:
104 lines (85 loc) • 3.11 kB
text/typescript
import fetch from "node-fetch";
import WM from "./index";
interface Variant {
id: number;
slug: string;
values: Array<{ id: number }>;
}
interface ProductVariant {
id: number;
sku: string,
variants: number[];
price: number;
high_price: number;
}
interface Galleries {
[key: number]: string[];
}
interface FetchDataResult {
variants: Variant[];
productVariants: ProductVariant[];
galleries: Galleries;
}
async function fetchData(productId: number): Promise<FetchDataResult> {
const variantResponse = await fetch(`https://sku-api.test.megaads.vn/v2/variant/${productId}?ignore_localization=1`);
const variantDataJson = await variantResponse.json() as { result: { variants: Variant[], productVariants: ProductVariant[] } };
const variants = variantDataJson.result.variants;
const productVariants = variantDataJson.result.productVariants;
const galleryResponse = await fetch(`https://sku-api.test.megaads.vn/gallery/${productId}?ignore_localization=1`);
const galleriesDataJson = await galleryResponse.json() as { result: Galleries };
const galleries = galleriesDataJson.result;
return { variants, productVariants, galleries };
}
async function getDetails(productId: number, productSkuId: number): Promise<void> {
const { variants, productVariants, galleries } = await fetchData(productId);
const variantsService = WM.initVariants({
variants: variants,
productVariants: productVariants,
galleries: galleries
});
const retVal = variantsService.getProductSkuDetail(productSkuId);
console.log(JSON.stringify(retVal));
}
getDetails(158287360, 3408937481).then(() => {});
function getCdnUrl(url: string): void {
const imagesWM = WM.initImages({
baseCdnUrl: 'https://cdn.printerval.com'
})
console.log(imagesWM.getImageCdn(url, 960, 960, false, false, {}));
}
getCdnUrl('https://assets.printerval.com/seller/2024/02/15/womens-espresso-martini-drinking-coffee-lovers-cocktail-bartender-v-neck-t-shirt-15f0742d17528a2355b987d587766f8b.png');
// format price
function getPrice(): void {
const priceService = WM.initPrice({
currencyUnit: 'USD'
});
console.log(priceService.formatPrice(1000000));
}
getPrice();
// print location
const printLocationsService = WM.initPrintLocations([
{
"id": 1,
"name": "Front",
"value": "front"
},
{
"id": 2,
"name": "Chest",
"value": "chest"
},
{
"id": 3,
"name": "Back",
"value": "back"
},
{
"id": 4,
"name": "Chest & Back",
"value": "chest_back"
}
], 'us');
// get additional price
console.log(printLocationsService.getAdditionalPrice('chest_back', 7, 10));
// decor galleries
console.log(printLocationsService.getGalleries(['https://cdn.printerval.com/image/t-shirts-men-heavyweight-t-shirt-1,black,print-2024-01-10_61ea1b01-5f99-46d1-ba76-17ddb8e712a5,2d2d2d.jpeg'], 'chest'));