"use strict"; const assert = require("assert"); const assureResponse = require("../../shared/assure-response"); // TODO: Validate response formats with validatem instead module.exports = function lcscScrapeCategory(state) { let { session } = state; return async function ({ data, createItem, deleteItem, updateData }) { let response = await session.post(`https://wwwapi.lcsc.com/v1/products/list`, { catalogIdList: [ data.catalogId ], currentPage: data.pageNumber, pageSize: 500, paramNameValueMap: {} }); assureResponse(response); assert(response.statusCode === 200); assert(response.body.productList.length > 0); for (let item of response.body.productList) { createItem({ // NOTE: item.productId seems like the database ID on the website, but item.productCode is the actual LCSC part number used internally for inventory management, so we use that for identification instead id: `lcsc:product:${item.productCode}`, tags: [ "lcsc:product" ], data: item }); } // We don't keep around page items, because the amount of pages for a category can change, and so this isn't a stable identifier. They'll be recreated on the next category scrape anyway. deleteItem(); }; };