BUGFIX: Fix inconsistencies of error handling in promise-based API (#1377)

This commit is contained in:
catloversg 2024-08-18 04:23:08 +07:00 committed by GitHub
parent 701c5d8e64
commit 94eef8ecde
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 24 additions and 30 deletions

@ -261,13 +261,7 @@ export const ns: InternalAPI<NSFull> = {
const server = helpers.getServer(ctx, hostname);
if (!(server instanceof Server)) {
helpers.log(ctx, () => "Cannot be executed on this server.");
return Promise.resolve(0);
}
const host = GetServer(ctx.workerScript.hostname);
if (host === null) {
throw new Error("Workerscript host is null");
throw helpers.errorMessage(ctx, "Cannot be executed on this server.");
}
// No root access or skill level too low
@ -286,6 +280,10 @@ export const ns: InternalAPI<NSFull> = {
)} (t=${formatThreads(threads)}).`,
);
return helpers.netscriptDelay(ctx, growTime * 1000).then(function () {
const host = GetServer(ctx.workerScript.hostname);
if (host === null) {
throw helpers.errorMessage(ctx, `Cannot find host of WorkerScript. Hostname: ${ctx.workerScript.hostname}.`);
}
const moneyBefore = server.moneyAvailable <= 0 ? 1 : server.moneyAvailable;
processSingleServerGrowth(server, threads, host.cpuCores);
const moneyAfter = server.moneyAvailable;
@ -360,8 +358,7 @@ export const ns: InternalAPI<NSFull> = {
const server = helpers.getServer(ctx, hostname);
if (!(server instanceof Server)) {
helpers.log(ctx, () => "Cannot be executed on this server.");
return Promise.resolve(0);
throw helpers.errorMessage(ctx, "Cannot be executed on this server.");
}
// No root access or skill level too low
@ -382,8 +379,7 @@ export const ns: InternalAPI<NSFull> = {
return helpers.netscriptDelay(ctx, weakenTime * 1000).then(function () {
const host = GetServer(ctx.workerScript.hostname);
if (host === null) {
helpers.log(ctx, () => "Server is null, did it die?");
return Promise.resolve(0);
throw helpers.errorMessage(ctx, `Cannot find host of WorkerScript. Hostname: ${ctx.workerScript.hostname}.`);
}
const weakenAmt = getWeakenEffect(threads, host.cpuCores);
server.weaken(weakenAmt);

@ -559,8 +559,7 @@ export function NetscriptSingularity(): InternalAPI<ISingularity> {
helpers.checkSingularityAccess(ctx);
const baseserver = Player.getCurrentServer();
if (!(baseserver instanceof Server)) {
helpers.log(ctx, () => "Cannot backdoor this kind of server");
return Promise.resolve();
throw helpers.errorMessage(ctx, "Cannot backdoor this kind of server.");
}
const server = baseserver;
const installTime = (calculateHackingTime(server, Player) / 4) * 1000;

@ -2,7 +2,6 @@ import { Terminal } from "../../Terminal";
import { Player } from "@player";
import { BaseServer } from "../../Server/BaseServer";
import { Server } from "../../Server/Server";
import { HacknetServer } from "../../Hacknet/HacknetServer";
export function backdoor(args: (string | number | boolean)[], server: BaseServer): void {
if (args.length !== 0) {
@ -11,24 +10,24 @@ export function backdoor(args: (string | number | boolean)[], server: BaseServer
}
if (!(server instanceof Server)) {
Terminal.error("Can only backdoor normal servers");
Terminal.error("Can only install a backdoor on normal servers");
return;
}
const normalServer = server as Server;
if (normalServer.purchasedByPlayer) {
if (server.purchasedByPlayer) {
Terminal.error(
"Cannot use backdoor on your own machines! You are currently connected to your home PC or one of your purchased servers",
"Cannot install a backdoor on your own machines! You are currently connected to your home PC or one of your purchased servers.",
);
} else if (!normalServer.hasAdminRights) {
Terminal.error("You do not have admin rights for this machine! Cannot backdoor");
} else if (normalServer.requiredHackingSkill > Player.skills.hacking) {
Terminal.error(
"Your hacking skill is not high enough to use backdoor on this machine. Try analyzing the machine to determine the required hacking skill",
);
} else if (normalServer instanceof HacknetServer) {
Terminal.error("Cannot use backdoor on this type of Server");
} else {
Terminal.startBackdoor();
return;
}
if (!server.hasAdminRights) {
Terminal.error("You do not have admin rights for this machine");
return;
}
if (server.requiredHackingSkill > Player.skills.hacking) {
Terminal.error(
"Your hacking skill is not high enough to install a backdoor on this machine. Try analyzing the machine to determine the required hacking skill.",
);
return;
}
Terminal.startBackdoor();
}