UNPKG

testcafe-browser-provider-browserstack

Version:
75 lines 7.67 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const node_fetch_1 = __importDefault(require("node-fetch")); const https_proxy_agent_1 = require("https-proxy-agent"); const ERROR_MESSAGES = __importStar(require("../templates/error-messages")); async function default_1(apiPath, params = {}) { if (!process.env['BROWSERSTACK_USERNAME'] || !process.env['BROWSERSTACK_ACCESS_KEY']) throw new Error(ERROR_MESSAGES.BROWSERSTACK_AUTHENTICATION_FAILED()); const { body } = params, queryParams = __rest(params, ["body"]); const urlObj = new URL(apiPath.url); for (const [key, value] of Object.entries(queryParams)) urlObj.searchParams.append(key, value); const url = urlObj.toString(); const user = process.env['BROWSERSTACK_USERNAME']; const pass = process.env['BROWSERSTACK_ACCESS_KEY']; const options = { method: apiPath.method || 'GET', headers: { 'Authorization': `Basic ${Buffer.from(user + ':' + pass).toString('base64')}`, 'User-Agent': 'testcafe-browserstack', }, }; const proxy = process.env['BROWSERSTACK_PROXY']; if (proxy) options.agent = new https_proxy_agent_1.HttpsProxyAgent(`http://${proxy}`); if (body) { options.body = JSON.stringify(body); options.headers['Content-Type'] = 'application/json'; } const res = await (0, node_fetch_1.default)(url, options); if (res.status === 401) throw new Error(ERROR_MESSAGES.BROWSERSTACK_AUTHENTICATION_FAILED()); if (apiPath.encoding === null) return Buffer.from(await res.arrayBuffer()); return res.json(); } exports.default = default_1; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcmVxdWVzdC1hcGkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNERBQStCO0FBQy9CLHlEQUFvRDtBQUNwRCw0RUFBOEQ7QUFFL0MsS0FBSyxvQkFBVyxPQUFPLEVBQUUsTUFBTSxHQUFHLEVBQUU7SUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUM7UUFDaEYsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsa0NBQWtDLEVBQUUsQ0FBQyxDQUFDO0lBRXpFLE1BQU0sRUFBRSxJQUFJLEtBQXFCLE1BQU0sRUFBdEIsV0FBVyxVQUFLLE1BQU0sRUFBakMsUUFBd0IsQ0FBUyxDQUFDO0lBRXhDLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVwQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDbEQsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRTNDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUU5QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDbEQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBRXBELE1BQU0sT0FBTyxHQUFHO1FBQ1osTUFBTSxFQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksS0FBSztRQUNoQyxPQUFPLEVBQUU7WUFDTCxlQUFlLEVBQUUsU0FBUyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzdFLFlBQVksRUFBSyx1QkFBdUI7U0FDM0M7S0FDSixDQUFDO0lBRUYsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRWhELElBQUksS0FBSztRQUNMLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxtQ0FBZSxDQUFDLFVBQVUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUUzRCxJQUFJLElBQUksRUFBRTtRQUNOLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLGtCQUFrQixDQUFDO0tBQ3hEO0lBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFBLG9CQUFLLEVBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXRDLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLGtDQUFrQyxFQUFFLENBQUMsQ0FBQztJQUV6RSxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssSUFBSTtRQUN6QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUVoRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN0QixDQUFDO0FBM0NELDRCQTJDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmZXRjaCBmcm9tICdub2RlLWZldGNoJztcbmltcG9ydCB7IEh0dHBzUHJveHlBZ2VudCB9IGZyb20gJ2h0dHBzLXByb3h5LWFnZW50JztcbmltcG9ydCAqIGFzIEVSUk9SX01FU1NBR0VTIGZyb20gJy4uL3RlbXBsYXRlcy9lcnJvci1tZXNzYWdlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIChhcGlQYXRoLCBwYXJhbXMgPSB7fSkge1xuICAgIGlmICghcHJvY2Vzcy5lbnZbJ0JST1dTRVJTVEFDS19VU0VSTkFNRSddIHx8ICFwcm9jZXNzLmVudlsnQlJPV1NFUlNUQUNLX0FDQ0VTU19LRVknXSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SX01FU1NBR0VTLkJST1dTRVJTVEFDS19BVVRIRU5USUNBVElPTl9GQUlMRUQoKSk7XG5cbiAgICBjb25zdCB7IGJvZHksIC4uLnF1ZXJ5UGFyYW1zIH0gPSBwYXJhbXM7XG5cbiAgICBjb25zdCB1cmxPYmogPSBuZXcgVVJMKGFwaVBhdGgudXJsKTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHF1ZXJ5UGFyYW1zKSlcbiAgICAgICAgdXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoa2V5LCB2YWx1ZSk7XG5cbiAgICBjb25zdCB1cmwgPSB1cmxPYmoudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IHVzZXIgPSBwcm9jZXNzLmVudlsnQlJPV1NFUlNUQUNLX1VTRVJOQU1FJ107XG4gICAgY29uc3QgcGFzcyA9IHByb2Nlc3MuZW52WydCUk9XU0VSU1RBQ0tfQUNDRVNTX0tFWSddO1xuXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgbWV0aG9kOiAgYXBpUGF0aC5tZXRob2QgfHwgJ0dFVCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYEJhc2ljICR7QnVmZmVyLmZyb20odXNlciArICc6JyArIHBhc3MpLnRvU3RyaW5nKCdiYXNlNjQnKX1gLFxuICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiAgICAndGVzdGNhZmUtYnJvd3NlcnN0YWNrJyxcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgcHJveHkgPSBwcm9jZXNzLmVudlsnQlJPV1NFUlNUQUNLX1BST1hZJ107XG5cbiAgICBpZiAocHJveHkpXG4gICAgICAgIG9wdGlvbnMuYWdlbnQgPSBuZXcgSHR0cHNQcm94eUFnZW50KGBodHRwOi8vJHtwcm94eX1gKTtcblxuICAgIGlmIChib2R5KSB7XG4gICAgICAgIG9wdGlvbnMuYm9keSA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICAgICAgICBvcHRpb25zLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHVybCwgb3B0aW9ucyk7XG5cbiAgICBpZiAocmVzLnN0YXR1cyA9PT0gNDAxKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTUVTU0FHRVMuQlJPV1NFUlNUQUNLX0FVVEhFTlRJQ0FUSU9OX0ZBSUxFRCgpKTtcblxuICAgIGlmIChhcGlQYXRoLmVuY29kaW5nID09PSBudWxsKVxuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oYXdhaXQgcmVzLmFycmF5QnVmZmVyKCkpO1xuXG4gICAgcmV0dXJuIHJlcy5qc29uKCk7XG59XG4iXX0=