@shift-code/cli
Version:
Redeem Gearbox SHiFT codes automatically
85 lines • 3.79 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.redeemCommand = void 0;
const api_1 = require("@shift-code/api");
const get_1 = require("@shift-code/get");
const chalk_1 = __importDefault(require("chalk"));
const cache_1 = require("../cache");
const names_1 = require("../names");
async function redeemCode(session, code, filter) {
try {
let game;
process.stdout.write(`[${chalk_1.default.yellow(code)}] Redeeming...`);
for await (const result of (0, api_1.redeem)(session, code, filter)) {
const platform = (0, names_1.isPlatformName)(result.service) ? names_1.PlatformName[result.service] : result.service;
if (!game) {
process.stdout.write("\r\x1b[K");
game = (0, names_1.isGameName)(result.title) ? names_1.GameName[result.title] : result.title;
const gameName = game ? ` ${game}` : '';
console.log(`[${chalk_1.default.yellow(code)}]${gameName}`);
}
const scope = platform ? `[${platform}] ` : '';
const message = `${scope}${result.status}`.trim();
switch (result.error) {
case api_1.ErrorCodes.Success:
console.info(` > ${message}`);
break;
case api_1.ErrorCodes.LoginRequired:
console.error(` > ${chalk_1.default.red('Failed to redeem due to invalid session. Please login again!')}`);
return [false, false];
case api_1.ErrorCodes.LaunchGame:
console.error(` > ${chalk_1.default.redBright('You need to launch a Shift-enabled game to continue redeeming.')}`);
return [false, false];
case api_1.ErrorCodes.SkippedDueToFilter:
console.error(` > ${message}`);
return [true, false];
default:
console.error(` > ${message}`);
break;
}
}
}
catch (err) {
const message = err instanceof Error ? err.message : 'Unknown error';
console.error(chalk_1.default.bgRed.white(message));
}
return [true, true];
}
async function redeemCommand(args) {
const { activeAccountID } = await (0, cache_1.loadMetaCache)();
if (!activeAccountID) {
console.error('No active user, please login.');
console.info('$ shift-code login');
return;
}
const { session, codes } = await (0, cache_1.loadAccountCache)(activeAccountID);
if (!session) {
console.error('No active user, please login.');
console.info('$ shift-code login');
return;
}
const user = await (0, api_1.account)(session);
await (0, cache_1.saveAccount)(user.id, user);
console.info(`Starting code redemption for: ${chalk_1.default.bold(user.email)}`);
const codeCache = codes ?? [];
const source = args.codes ? args.codes.map((code) => ({ code })) : (0, get_1.getShiftCodes)();
for await (const { code } of source) {
if (codeCache.includes(code)) {
console.info(`[${chalk_1.default.yellow(code)}] Code found in cache, skipping.`);
continue;
}
const [cont, cache] = await redeemCode(session, code, { game: args.game, platform: args.platform });
if (!cont)
return;
if (cache) {
codeCache.push(code);
await (0, cache_1.appendCodeCache)(user.id, code);
}
}
console.log(chalk_1.default.green('Complete'));
}
exports.redeemCommand = redeemCommand;
//# sourceMappingURL=redeem.js.map