"use strict"; const assert = require("assert"); const assureResponse = require("../../shared/assure-response"); module.exports = function lcscFindCategories(state) { const withCsrfToken = require("../with-csrf-token")(state); let { session } = state; return async function ({ createItem }) { let response = await withCsrfToken((token) => { return session.post("https://lcsc.com/products/categories", { manufacturer: "", in_stock: "false", is_RoHS: "false" }, { headers: { "accept": "application/json, text/javascript, */*; q=0.01", "X-CSRF-TOKEN": token } }); }); assureResponse(response); assert(response.body.data.data != null); assert(response.body.code === 200); function processCategoryEntries(categories) { for (let category of categories) { createItem({ id: `lcsc:category:${category.id}`, tags: [ "lcsc:category" ], data: { ... category, pageNumber: 1 } }); if (category.subs != null) { processCategoryEntries(category.subs); } } } // Listing is a {name: data} mapping of categories processCategoryEntries(Object.values(response.body.data.data)); // for (let category of Object.values(response.body.data.data)) { // createItem({ // id: `lcsc:category:${category.id}`, // tags: [ "lcsc:category" ], // data: { // ... category, // pageNumber: 1 // } // }); // } }; };