UNPKG

wayscript

Version:

WayScript gives you flexible building blocks to seamlessly integrate, automate and host tools in the cloud.

119 lines (91 loc) 3.61 kB
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; const settings = require("./setup"); function getProcessExecutionUserToken() { return process.env.WAYSCRIPT_EXECUTION_USER_TOKEN || ""; } function getProcessUUID() { return process.env.WS_PROCESS_ID; } function getApplicationKey(){ return process.env.WAYSCRIPT_EXECUTION_USER_APPLICATION_KEY; } function getLairUrl() { return process.env.WAYSCRIPT_LAIR_URL; } function getProcessExecutionUserRefreshToken() { return process.env.WAYSCRIPT_EXECUTION_USER_REFRESH_TOKEN || ""; } class WayScriptClient { constructor() { this.user_auth_token = getProcessExecutionUserToken(); this.process_uuid = getProcessUUID(); } postWebhookHttpTrigger(_id, payload) { let url = this.buildURLEndpoint("webhooks","http_trigger_response",{id: _id}); return this.executeRequest('POST', url, payload); } getProcessDetailExpanded(_id) { let url = this.buildURLEndpoint("processes","detail_expanded",{id: _id}); return this.executeRequest('GET', url); } getLairDetail(_id) { let url = this.buildURLEndpoint("lairs","detail",{id: _id}); return this.executeRequest('GET', url); } getWorkspaceDetail(_id) { let url = this.buildURLEndpoint("workspaces","detail",{id: _id}); return this.executeRequest('GET', url); } getUserByApplicationKeyDetail(_id, _applicationKey) { let url = this.buildURLEndpoint("workspaces","user_application_key_detail",{id: _id}); const headers = { 'authorization': "Bearer " +_applicationKey, 'Content-Type': 'application/json;charset=UTF-8' }; return this.executeRequest('GET', url, null, headers); } setLairSecret(_id, _secretKey, _secretValue) { const url = this.buildURLEndpoint("files","set_secret",{id: _id}); const payload = {key: _secretKey, value: _secretValue}; return this.executeRequest('POST', url, payload); } buildURLEndpoint(subpath, route, templateArgs) { let subpathEndpoint = settings.ROUTES[subpath][route]; for (const arg in templateArgs) { subpathEndpoint = subpathEndpoint.replace("$"+arg, templateArgs[arg]); } let url = settings.WAYSCRIPT_ORIGIN + "/" + subpathEndpoint; return url; } executeRequest(method, url, payload, headers) { let request = new XMLHttpRequest(); request.open(method, url, false); request.responseType = 'json'; let access_token = "Bearer " + getProcessExecutionUserToken(); if (headers !== undefined){ for (const [key, value] of Object.entries(headers)) { request.setRequestHeader(`${key}`,`${value}`); } } else{ request.setRequestHeader('authorization', access_token); request.setRequestHeader('Content-Type', 'application/json;charset=UTF-8'); } try { request.send(payload); } catch (e) { console.log(e); } let responseJson = ''; try { responseJson = JSON.parse(request.responseText); } catch (e) { console.log(e); console.log(url); console.log(request.status); console.log(request.responseText); } return [request.status, responseJson]; } } module.exports = {getProcessExecutionUserToken, getProcessUUID, getApplicationKey, getLairUrl, getProcessExecutionUserRefreshToken, WayScriptClient};