UNPKG

appcenter-cli

Version:

Command line tool for Visual Studio App Center

107 lines (106 loc) 5.07 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); // 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/appCenterClient"); const appcenter_client_credentials_1 = require("./appcenter-client-credentials"); const user_agent_filter_1 = require("./user-agent-filter"); const telemetry_filter_1 = require("./telemetry-filter"); const BasicAuthenticationCredentials = require("ms-rest").BasicAuthenticationCredentials; const createLogger = require("ms-rest").LogFilter.create; const interaction_1 = require("../interaction"); const command_result_1 = require("../../util/commandline/command-result"); function createAppCenterClient(command, telemetryEnabled) { function createClientOptions() { debug(`Creating client options, isDebug = ${interaction_1.isDebug()}`); const filters = [user_agent_filter_1.userAgentFilter, telemetry_filter_1.telemetryFilter(command.join(" "), telemetryEnabled)]; return { filters: interaction_1.isDebug() ? [createLogger()].concat(filters) : filters }; } return { fromUserNameAndPassword(userName, password, endpoint) { debug(`Creating client from user name and password for endpoint ${endpoint}`); return new appCenterClient_1.AppCenterClient(new BasicAuthenticationCredentials(userName, password), endpoint, createClientOptions()); }, 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; } debug(`Passing token ${tokenFunc} of type ${typeof tokenFunc}`); return new appCenterClient_1.AppCenterClient(new appcenter_client_credentials_1.AppCenterClientCredentials(tokenFunc), endpoint, createClientOptions()); }, 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(new appcenter_client_credentials_1.AppCenterClientCredentials(() => user.accessToken), user.endpoint, createClientOptions()); } }; } exports.createAppCenterClient = createAppCenterClient; // Helper function to wrap client calls into promises while maintaining some type safety. function clientCall(action) { return new Promise((resolve, reject) => { action((err, result) => { if (err) { reject(err); } else { resolve(result); } }); }); } exports.clientCall = clientCall; 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; // Helper function to wrap client calls into pormises and returning both HTTP response and parsed result function clientRequest(action) { return new Promise((resolve, reject) => { action((err, result, request, response) => { if (err) { reject(err); } else { resolve({ result, response }); } }); }); } exports.clientRequest = clientRequest;