appcenter-cli
Version:
Command line tool for Visual Studio App Center
80 lines (79 loc) • 3.94 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.handleHttpError = exports.createAppCenterClient = void 0;
// Helper function to create client objects
const debug = require("debug")("appcenter-cli:util:apis:create-client");
const util_1 = require("util");
const appCenterClient_1 = require("./generated/src/appCenterClient");
const user_agent_policy_1 = require("./user-agent-policy");
const telemetry_policy_1 = require("./telemetry-policy");
const command_result_1 = require("../../util/commandline/command-result");
const authorization_policy_1 = require("./authorization-policy");
function createAppCenterClient(command, telemetryEnabled) {
function createClientOptions(token) {
const policies = [
{ policy: telemetry_policy_1.telemetryPolicy(command.join(" "), telemetryEnabled), position: "perCall" },
{ policy: user_agent_policy_1.userAgentPolicy(), position: "perCall" },
{ policy: authorization_policy_1.authorizationPolicy(token), position: "perCall" },
];
const serviceClientOptions = {
additionalPolicies: policies,
};
return serviceClientOptions;
}
return {
fromToken(token, endpoint) {
debug(`Creating client from token for endpoint ${endpoint}`);
let tokenFunc;
if (typeof token === "string") {
debug("Creating from token as string");
tokenFunc = () => Promise.resolve(token);
}
else if (typeof token === "object") {
debug("Creating from token as promise");
tokenFunc = () => token;
}
else {
debug("Creating from token as function");
tokenFunc = token;
}
return new appCenterClient_1.AppCenterClient(Object.assign({ endpoint: endpoint }, createClientOptions(tokenFunc())));
},
fromProfile(user) {
if (!user) {
debug(`No current user, not creating client`);
return null;
}
debug(`Creating client from user for user ${util_1.inspect(user)}`);
return new appCenterClient_1.AppCenterClient(Object.assign({ endpoint: user.endpoint }, createClientOptions(user.accessToken)));
},
};
}
exports.createAppCenterClient = createAppCenterClient;
//
// Response type for clientRequest<T> - returns both parsed result and the HTTP response.
//
function handleHttpError(error, check404, messageDefault, message404 = `404 Error received from api`, message401 = `401 Error received from api`) {
return __awaiter(this, void 0, void 0, function* () {
if (check404 && error.statusCode === 404) {
throw command_result_1.failure(command_result_1.ErrorCodes.InvalidParameter, message404);
}
if (error.statusCode === 401) {
throw command_result_1.failure(command_result_1.ErrorCodes.NotLoggedIn, message401);
}
else {
debug(`${messageDefault}- ${util_1.inspect(error)}`);
throw command_result_1.failure(command_result_1.ErrorCodes.Exception, messageDefault);
}
});
}
exports.handleHttpError = handleHttpError;