@splode/obake
Version:
Check merchants for deals.
119 lines • 4.77 kB
JavaScript
;
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