UNPKG

@splode/obake

Version:

Check merchants for deals.

119 lines 4.77 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var Store_1 = __importDefault(require("../Store")); var JensonUSA_1 = __importDefault(require("./JensonUSA")); var url_1 = __importDefault(require("../url")); var Amazon_1 = __importDefault(require("./Amazon")); var AppStore_1 = __importDefault(require("./AppStore")); var BandH_1 = __importDefault(require("./BandH")); var BestBuy_1 = __importDefault(require("./BestBuy")); var Costco_1 = __importDefault(require("./Costco")); var NewEgg_1 = __importDefault(require("./NewEgg")); var REI_1 = __importDefault(require("./REI")); var Walmart_1 = __importDefault(require("./Walmart")); var Zavvi_1 = __importDefault(require("./Zavvi")); var MerchantFactory = /** @class */ (function () { function MerchantFactory() { } MerchantFactory.create = function (goods) { var mLs = []; goods.forEach(function (good) { var _a; var m = null; var host; try { host = (0, url_1.default)(good.URL); } catch (error) { (_a = Store_1.default.get().logger) === null || _a === void 0 ? void 0 : _a.error("failed to get hostname from URL: " + good.URL); return; } switch (host) { case "apps.apple.com": m = MerchantFactory.findByName("appstore", mLs); if (!m) { m = new AppStore_1.default(); mLs.push(m); } break; case "www.amazon.com": m = MerchantFactory.findByName("amazon", mLs); if (!m) { m = new Amazon_1.default(); mLs.push(m); } break; case "www.bhphotovideo.com": m = MerchantFactory.findByName("b&h", mLs); if (!m) { m = new BandH_1.default(); mLs.push(m); } break; case "www.bestbuy.com": m = MerchantFactory.findByName("bestbuy", mLs); if (!m) { m = new BestBuy_1.default(); mLs.push(m); } break; case "www.costco.com": m = MerchantFactory.findByName("costco", mLs); if (!m) { m = new Costco_1.default(); mLs.push(m); } break; case "www.jensonusa.com": m = MerchantFactory.findByName("jensonusa", mLs); if (!m) { m = new JensonUSA_1.default(); mLs.push(m); } break; case "www.newegg.com": m = MerchantFactory.findByName("newegg", mLs); if (!m) { m = new NewEgg_1.default(); mLs.push(m); } break; case "www.rei.com": m = MerchantFactory.findByName("rei", mLs); if (!m) { m = new REI_1.default(); mLs.push(m); } break; case "www.walmart.com": m = MerchantFactory.findByName("walmart", mLs); if (!m) { m = new Walmart_1.default(); mLs.push(m); } break; case "us.zavvi.com": m = MerchantFactory.findByName("zavvi", mLs); if (!m) { m = new Zavvi_1.default(); mLs.push(m); } break; default: break; } m === null || m === void 0 ? void 0 : m.addGoods(good); good.merchant = m || null; }); return mLs; }; MerchantFactory.findByName = function (name, list) { return list.find(function (m) { return m.name === name; }) || null; }; return MerchantFactory; }()); exports.default = MerchantFactory; //# sourceMappingURL=MerchantFactory.js.map