@gocommerce/utils
Advanced tools
Comparing version 0.6.5 to 0.6.6
@@ -7,12 +7,28 @@ 'use strict'; | ||
exports.default = buildGraphQLError; | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } | ||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } | ||
function buildGraphQLError(message, code, customFields) { | ||
class CustomError extends Error { | ||
constructor() { | ||
super(...arguments); | ||
this.code = code; | ||
this.message = message || 'Internal server error'; | ||
this.customFields = customFields || {}; | ||
var CustomError = function (_Error) { | ||
_inherits(CustomError, _Error); | ||
function CustomError() { | ||
_classCallCheck(this, CustomError); | ||
var _this = _possibleConstructorReturn(this, (CustomError.__proto__ || Object.getPrototypeOf(CustomError)).apply(this, arguments)); | ||
_this.code = code; | ||
_this.message = message || 'Internal server error'; | ||
_this.customFields = customFields || {}; | ||
return _this; | ||
} | ||
} | ||
return CustomError; | ||
}(Error); | ||
throw new CustomError(); | ||
} |
@@ -7,2 +7,4 @@ 'use strict'; | ||
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; | ||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
@@ -13,6 +15,15 @@ | ||
exports.mergeDeep = mergeDeep; | ||
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } | ||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
/** | ||
* receive a object and a array of string, returns all keys of the first level that match in the array | ||
*/ | ||
const getSubset = exports.getSubset = (keys, obj) => keys.reduce((a, c) => !obj[c] ? a : _extends({}, a, { [c]: obj[c] }), {}); | ||
var getSubset = exports.getSubset = function getSubset(keys, obj) { | ||
return keys.reduce(function (a, c) { | ||
return !obj[c] ? a : _extends({}, a, _defineProperty({}, c, obj[c])); | ||
}, {}); | ||
}; | ||
/** | ||
@@ -22,5 +33,7 @@ * receive a object and put all its keys in the same level, | ||
*/ | ||
const flatter = exports.flatter = (object, prefix = '') => { | ||
return object != null && Object.keys(object).reduce((prev, element) => { | ||
return object[element] != null && isObject(object[element]) ? _extends({}, prev, flatter(object[element], `${prefix}${element}-`)) : _extends({}, prev, { [`${prefix}${element}`]: object[element] }); | ||
var flatter = exports.flatter = function flatter(object) { | ||
var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; | ||
return object != null && Object.keys(object).reduce(function (prev, element) { | ||
return object[element] != null && isObject(object[element]) ? _extends({}, prev, flatter(object[element], '' + prefix + element + '-')) : _extends({}, prev, _defineProperty({}, '' + prefix + element, object[element])); | ||
}, {}); | ||
@@ -32,4 +45,4 @@ }; | ||
*/ | ||
const objectToLogger = exports.objectToLogger = apiData => { | ||
const sendObject = _extends({ | ||
var objectToLogger = exports.objectToLogger = function objectToLogger(apiData) { | ||
var sendObject = _extends({ | ||
time: +new Date(), | ||
@@ -39,4 +52,4 @@ type: 'Error', | ||
}, apiData); | ||
return Object.keys(sendObject).reduce((prev, element) => { | ||
return `${prev} ${element}="${sendObject[element]}"`; | ||
return Object.keys(sendObject).reduce(function (prev, element) { | ||
return prev + ' ' + element + '="' + sendObject[element] + '"'; | ||
}, '').slice(1); | ||
@@ -48,4 +61,4 @@ }; | ||
*/ | ||
const swapValueInArray = exports.swapValueInArray = (newValue, index, array) => { | ||
return [...array.slice(0, index), newValue, ...array.slice(index + 1, array.length)]; | ||
var swapValueInArray = exports.swapValueInArray = function swapValueInArray(newValue, index, array) { | ||
return [].concat(_toConsumableArray(array.slice(0, index)), [newValue], _toConsumableArray(array.slice(index + 1, array.length))); | ||
}; | ||
@@ -56,4 +69,4 @@ /** | ||
*/ | ||
const removeValueInArray = exports.removeValueInArray = (index, array) => { | ||
return [...array.slice(0, index), ...array.slice(index + 1, array.length)]; | ||
var removeValueInArray = exports.removeValueInArray = function removeValueInArray(index, array) { | ||
return [].concat(_toConsumableArray(array.slice(0, index)), _toConsumableArray(array.slice(index + 1, array.length))); | ||
}; | ||
@@ -65,3 +78,3 @@ /** | ||
function isObject(item) { | ||
return item && typeof item === 'object' && !Array.isArray(item); | ||
return item && (typeof item === 'undefined' ? 'undefined' : _typeof(item)) === 'object' && !Array.isArray(item); | ||
} | ||
@@ -80,7 +93,7 @@ /** | ||
function mergeDeep(target, source) { | ||
let output = Object.assign({}, target); | ||
var output = Object.assign({}, target); | ||
if (isObject(target) && isObject(source)) { | ||
Object.keys(source).forEach(key => { | ||
Object.keys(source).forEach(function (key) { | ||
if (isObject(source[key])) { | ||
if (!(key in target)) Object.assign(output, { [key]: source[key] });else { | ||
if (!(key in target)) Object.assign(output, _defineProperty({}, key, source[key]));else { | ||
output[key] = mergeDeep(target[key], source[key]); | ||
@@ -90,6 +103,6 @@ } | ||
if (typeof source[key] === 'boolean') { | ||
Object.assign(output, { [key]: !target[key] }); | ||
Object.assign(output, _defineProperty({}, key, !target[key])); | ||
} | ||
} else { | ||
Object.assign(output, { [key]: source[key] }); | ||
Object.assign(output, _defineProperty({}, key, source[key])); | ||
} | ||
@@ -100,7 +113,9 @@ }); | ||
} | ||
const objectToQueryString = exports.objectToQueryString = (source, config) => { | ||
const fields = config.filter(item => !!source[item.field]).map(item => { | ||
const queryName = encodeURIComponent(item.nameInUrl ? item.nameInUrl : item.field); | ||
const queryValue = encodeURIComponent(item.format ? item.format(source[item.field]) : source[item.field]); | ||
return `${queryName}=${queryValue || item.default}`; | ||
var objectToQueryString = exports.objectToQueryString = function objectToQueryString(source, config) { | ||
var fields = config.filter(function (item) { | ||
return !!source[item.field]; | ||
}).map(function (item) { | ||
var queryName = encodeURIComponent(item.nameInUrl ? item.nameInUrl : item.field); | ||
var queryValue = encodeURIComponent(item.format ? item.format(source[item.field]) : source[item.field]); | ||
return queryName + '=' + (queryValue || item.default); | ||
}); | ||
@@ -113,4 +128,4 @@ return fields.join('&'); | ||
*/ | ||
const isGoCommerceAcc = exports.isGoCommerceAcc = data => { | ||
let account = ''; | ||
var isGoCommerceAcc = exports.isGoCommerceAcc = function isGoCommerceAcc(data) { | ||
var account = ''; | ||
if (typeof data === 'string') { | ||
@@ -123,4 +138,4 @@ account = data; | ||
}; | ||
const getStaticUrl = exports.getStaticUrl = (ctx, type, fileName) => { | ||
return `https://static.gocommerce.com/${ctx.vtex.account}/assets/gocommerce/${type}/${fileName}`; | ||
var getStaticUrl = exports.getStaticUrl = function getStaticUrl(ctx, type, fileName) { | ||
return 'https://static.gocommerce.com/' + ctx.vtex.account + '/assets/gocommerce/' + type + '/' + fileName; | ||
}; |
@@ -6,11 +6,11 @@ 'use strict'; | ||
}); | ||
const containsKey = object => { | ||
var containsKey = function containsKey(object) { | ||
return object && object.message; | ||
}; | ||
const getErrorCode = (errorMap, status, code) => { | ||
const defaultCode = errorMap.default && errorMap.default.message || 'someErrorHappend-tryLater'; | ||
const defaultType = errorMap.default && errorMap.default.type || 'error'; | ||
const currentValue = containsKey(errorMap[status]) && errorMap[status] || containsKey(errorMap[status] && errorMap[status][code]) || {}; | ||
var getErrorCode = function getErrorCode(errorMap, status, code) { | ||
var defaultCode = errorMap.default && errorMap.default.message || 'someErrorHappend-tryLater'; | ||
var defaultType = errorMap.default && errorMap.default.type || 'error'; | ||
var currentValue = containsKey(errorMap[status]) && errorMap[status] || containsKey(errorMap[status] && errorMap[status][code]) || {}; | ||
return { error: { message: currentValue.message || defaultCode, type: currentValue.type || defaultType } }; | ||
}; | ||
exports.default = getErrorCode; |
@@ -9,23 +9,31 @@ 'use strict'; | ||
exports.default = function (ctx, request, response, TOKEN, type = 'none') { | ||
const vtex = ctx.vtex; | ||
const requestKeys = ['url', 'method', 'headers', 'body', 'data']; | ||
const responseKeys = ['status', 'statusText', 'message', 'headers', 'body', 'data']; | ||
const requestData = requestKeys.reduce((prev, next) => _extends({}, prev, { [`request-${next}`]: request[next] }), {}); | ||
const responsetData = responseKeys.reduce((prev, next) => _extends({}, prev, { [`response-${next}`]: response[next] }), {}); | ||
exports.default = function (ctx, request, response, TOKEN) { | ||
var type = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'none'; | ||
var vtex = ctx.vtex; | ||
var requestKeys = ['url', 'method', 'headers', 'body', 'data']; | ||
var responseKeys = ['status', 'statusText', 'message', 'headers', 'body', 'data']; | ||
var requestData = requestKeys.reduce(function (prev, next) { | ||
return _extends({}, prev, _defineProperty({}, 'request-' + next, request[next])); | ||
}, {}); | ||
var responsetData = responseKeys.reduce(function (prev, next) { | ||
return _extends({}, prev, _defineProperty({}, 'response-' + next, response[next])); | ||
}, {}); | ||
// const requestData = getSubset(requestKeys, request) | ||
// const responsetData = getSubset(responseKeys, response) | ||
const flattterApiData = (0, _functions.flatter)({ vtex: vtex }); | ||
var flattterApiData = (0, _functions.flatter)({ vtex: vtex }); | ||
//const rawMessage = objectToLogger(flattterApiData) | ||
const SOURCE = 'gc_ui'; | ||
const headers = ctx.request.headers; | ||
const host = headers['x-forwarded-host']; | ||
const log = () => ({ | ||
time: +new Date(), | ||
host: host, | ||
source: SOURCE, | ||
event: _extends({}, flattterApiData, requestData, responsetData, { sourcetype: 'devLog' }), | ||
sourcetype: 'json', | ||
index: SOURCE | ||
}); | ||
var SOURCE = 'gc_ui'; | ||
var headers = ctx.request.headers; | ||
var host = headers['x-forwarded-host']; | ||
var log = function log() { | ||
return { | ||
time: +new Date(), | ||
host: host, | ||
source: SOURCE, | ||
event: _extends({}, flattterApiData, requestData, responsetData, { sourcetype: 'devLog' }), | ||
sourcetype: 'json', | ||
index: SOURCE | ||
}; | ||
}; | ||
return (0, _axios2.default)({ | ||
@@ -38,8 +46,10 @@ url: SPLUNK_URI, | ||
'Proxy-Authorization': vtex.authToken, | ||
Authorization: `Splunk ${TOKEN}`, | ||
Authorization: 'Splunk ' + TOKEN, | ||
'Content-Type': 'application/json' | ||
} | ||
}).then(res => { | ||
}).then(function (res) { | ||
// console.log(`detail log `) | ||
}).catch(() => console.log(`detail log fail`)); //console.error) | ||
}).catch(function () { | ||
return console.log('detail log fail'); | ||
}); //console.error) | ||
}; | ||
@@ -59,3 +69,5 @@ | ||
const SOURCE = 'gc_ui'; | ||
const SPLUNK_URI = `http://splunk-heavyforwarder-public.vtex.com/services/collector/event?channel=${(0, _v2.default)()}&source=${SOURCE}`; | ||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
var SOURCE = 'gc_ui'; | ||
var SPLUNK_URI = 'http://splunk-heavyforwarder-public.vtex.com/services/collector/event?channel=' + (0, _v2.default)() + '&source=' + SOURCE; |
@@ -7,2 +7,4 @@ 'use strict'; | ||
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; | ||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
@@ -24,24 +26,81 @@ | ||
const getCurrentTime = () => new Date().getTime(); | ||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } | ||
var getCurrentTime = function getCurrentTime() { | ||
return new Date().getTime(); | ||
}; | ||
//encapsulates the resolver with a metricLogger, witch dispatchs a begin and end event to splunk | ||
// inject the makeApiCall function to the resolver parameters | ||
const addLoggerToResolver = (splunkToken, resolver) => async (_, args, ctx, info) => { | ||
const metricId = (0, _v2.default)(); | ||
const start_time = getCurrentTime(); | ||
(0, _metricLogger2.default)(metricId, ctx, 'BeginHandleRequest', {}, splunkToken, info.fieldName); | ||
const response = await resolver(_, args, ctx, info, async (url, method, payload, adicionalHeaders) => await (0, _makeApiCall2.default)(metricId, url, ctx, method, splunkToken, info.fieldName, payload, adicionalHeaders)); | ||
const endHandler = { | ||
wasError: !!(!response || response.error), | ||
statusCode: response && response.error ? response.error.status : 200, | ||
elapsed: (getCurrentTime() - start_time).toFixed(1) | ||
}; | ||
(0, _metricLogger2.default)(metricId, ctx, 'EndHandleRequest', endHandler, splunkToken, info.fieldName); | ||
return response; | ||
var addLoggerToResolver = function addLoggerToResolver(splunkToken, resolver) { | ||
return function () { | ||
var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(_, args, ctx, info) { | ||
var metricId, start_time, response, endHandler; | ||
return regeneratorRuntime.wrap(function _callee2$(_context2) { | ||
while (1) { | ||
switch (_context2.prev = _context2.next) { | ||
case 0: | ||
metricId = (0, _v2.default)(); | ||
start_time = getCurrentTime(); | ||
(0, _metricLogger2.default)(metricId, ctx, 'BeginHandleRequest', {}, splunkToken, info.fieldName); | ||
_context2.next = 5; | ||
return resolver(_, args, ctx, info, function () { | ||
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(url, method, payload, adicionalHeaders) { | ||
return regeneratorRuntime.wrap(function _callee$(_context) { | ||
while (1) { | ||
switch (_context.prev = _context.next) { | ||
case 0: | ||
_context.next = 2; | ||
return (0, _makeApiCall2.default)(metricId, url, ctx, method, splunkToken, info.fieldName, payload, adicionalHeaders); | ||
case 2: | ||
return _context.abrupt('return', _context.sent); | ||
case 3: | ||
case 'end': | ||
return _context.stop(); | ||
} | ||
} | ||
}, _callee, undefined); | ||
})); | ||
return function (_x5, _x6, _x7, _x8) { | ||
return _ref2.apply(this, arguments); | ||
}; | ||
}()); | ||
case 5: | ||
response = _context2.sent; | ||
endHandler = { | ||
wasError: !!(!response || response.error), | ||
statusCode: response && response.error ? response.error.status : 200, | ||
elapsed: (getCurrentTime() - start_time).toFixed(1) | ||
}; | ||
(0, _metricLogger2.default)(metricId, ctx, 'EndHandleRequest', endHandler, splunkToken, info.fieldName); | ||
return _context2.abrupt('return', response); | ||
case 9: | ||
case 'end': | ||
return _context2.stop(); | ||
} | ||
} | ||
}, _callee2, undefined); | ||
})); | ||
return function (_x, _x2, _x3, _x4) { | ||
return _ref.apply(this, arguments); | ||
}; | ||
}(); | ||
}; | ||
//map all resolvermap, including the resolvers itself and fieldResolver if exist, and invoke addLoggerToResolver | ||
const loggerMiddleware = (splunkToken, resolvers) => Object.keys(resolvers).reduce((prev, rootResolverName) => _extends({}, prev, { | ||
[rootResolverName]: typeof resolvers[rootResolverName] !== 'object' ? addLoggerToResolver(splunkToken, resolvers[rootResolverName]) : Object.keys(resolvers[rootResolverName]).reduce((prev, fieldResolverName) => _extends({}, prev, { | ||
[fieldResolverName]: addLoggerToResolver(splunkToken, resolvers[rootResolverName][fieldResolverName]) | ||
}), {}) | ||
}), {}); | ||
var loggerMiddleware = function loggerMiddleware(splunkToken, resolvers) { | ||
return Object.keys(resolvers).reduce(function (prev, rootResolverName) { | ||
return _extends({}, prev, _defineProperty({}, rootResolverName, _typeof(resolvers[rootResolverName]) !== 'object' ? addLoggerToResolver(splunkToken, resolvers[rootResolverName]) : Object.keys(resolvers[rootResolverName]).reduce(function (prev, fieldResolverName) { | ||
return _extends({}, prev, _defineProperty({}, fieldResolverName, addLoggerToResolver(splunkToken, resolvers[rootResolverName][fieldResolverName]))); | ||
}, {}))); | ||
}, {}); | ||
}; | ||
exports.default = loggerMiddleware; |
@@ -27,48 +27,80 @@ 'use strict'; | ||
const makeApiCall = async (metricId, url, ctx, method, splunkToken, fieldName, payload, adicionalHeaders = {}) => { | ||
const account = ctx.vtex.route.params.account; | ||
const start_time = new Date().getTime(); | ||
const headers = ctx.request.headers; | ||
const operationId = headers['x-operationid'] && headers['x-operationid'].split('|'); | ||
const urlWithoutHttps = url.startsWith('https') && url.replace('https', 'http') || url; | ||
const isHttps = !url.startsWith('http') || url.startsWith('https'); | ||
const baseUrl = 'http://api.gocommerce.com/'; | ||
const requestParams = { | ||
baseURL: `${baseUrl}${account}`, | ||
url: urlWithoutHttps, | ||
method: method, | ||
data: payload, | ||
withCredentials: true, | ||
headers: _extends({ | ||
'Proxy-Authorization': ctx.vtex.authToken, | ||
'Cache-Control': 'public, max-age=3', | ||
Cookie: ctx.request.header.cookie || '', | ||
['X-OperationId']: `${operationId && operationId[0]}|${operationId && parseInt(operationId[1]) + 1}` | ||
}, (0, _functions.getSubset)(['referer', 'x-forwarded-for', 'x-forwarded-host'], ctx.request.header), isHttps && { 'X-Vtex-Use-Https': true }, adicionalHeaders) | ||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } | ||
var makeApiCall = function () { | ||
var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(metricId, url, ctx, method, splunkToken, fieldName, payload) { | ||
var adicionalHeaders = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : {}; | ||
var account, start_time, headers, operationId, urlWithoutHttps, isHttps, baseUrl, requestParams, _metricLogger; | ||
return regeneratorRuntime.wrap(function _callee$(_context) { | ||
while (1) { | ||
switch (_context.prev = _context.next) { | ||
case 0: | ||
account = ctx.vtex.route.params.account; | ||
start_time = new Date().getTime(); | ||
headers = ctx.request.headers; | ||
operationId = headers['x-operationid'] && headers['x-operationid'].split('|'); | ||
urlWithoutHttps = url.startsWith('https') && url.replace('https', 'http') || url; | ||
isHttps = !url.startsWith('http') || url.startsWith('https'); | ||
baseUrl = 'http://api.gocommerce.com/'; | ||
requestParams = { | ||
baseURL: '' + baseUrl + account, | ||
url: urlWithoutHttps, | ||
method: method, | ||
data: payload, | ||
withCredentials: true, | ||
headers: _extends(_defineProperty({ | ||
'Proxy-Authorization': ctx.vtex.authToken, | ||
'Cache-Control': 'public, max-age=3', | ||
Cookie: ctx.request.header.cookie || '' | ||
}, 'X-OperationId', (operationId && operationId[0]) + '|' + (operationId && parseInt(operationId[1]) + 1)), (0, _functions.getSubset)(['referer', 'x-forwarded-for', 'x-forwarded-host'], ctx.request.header), isHttps && { 'X-Vtex-Use-Https': true }, adicionalHeaders) | ||
}; | ||
_metricLogger = function _metricLogger(action, adicionalInformation) { | ||
return (0, _metricLogger3.default)(metricId, ctx, action, _extends({ | ||
requestUrl: requestParams.baseURL + requestParams.url, | ||
method: requestParams.method, | ||
api: url && url.split('/')[1] || 'admin' | ||
}, adicionalInformation), splunkToken, fieldName); | ||
}; | ||
_metricLogger('BeginSubRequest'); | ||
_context.next = 12; | ||
return (0, _axios2.default)(requestParams).then(function (response) { | ||
_metricLogger('EndSubRequest', { | ||
wasError: 'false', | ||
statusCode: response.status, | ||
elapsed: (new Date().getTime() - start_time).toFixed(2) | ||
}); | ||
(0, _logger2.default)(ctx, requestParams, response, splunkToken); | ||
return response; | ||
}).catch(function (e) { | ||
console.log('e', e); | ||
_metricLogger('EndSubRequest', { | ||
wasError: 'true', | ||
statusCode: e.response && e.response.status || 500, | ||
elapse: new Date().getTime() - start_time | ||
}); | ||
(0, _logger2.default)(ctx, requestParams, e.response || {}, splunkToken); | ||
return { error: e.response }; | ||
}); | ||
case 12: | ||
return _context.abrupt('return', _context.sent); | ||
case 13: | ||
case 'end': | ||
return _context.stop(); | ||
} | ||
} | ||
}, _callee, undefined); | ||
})); | ||
return function makeApiCall(_x2, _x3, _x4, _x5, _x6, _x7, _x8) { | ||
return _ref.apply(this, arguments); | ||
}; | ||
const _metricLogger = (action, adicionalInformation) => (0, _metricLogger3.default)(metricId, ctx, action, _extends({ | ||
requestUrl: requestParams.baseURL + requestParams.url, | ||
method: requestParams.method, | ||
api: url && url.split('/')[1] || 'admin' | ||
}, adicionalInformation), splunkToken, fieldName); | ||
_metricLogger('BeginSubRequest'); | ||
return await (0, _axios2.default)(requestParams).then(response => { | ||
_metricLogger('EndSubRequest', { | ||
wasError: 'false', | ||
statusCode: response.status, | ||
elapsed: (new Date().getTime() - start_time).toFixed(2) | ||
}); | ||
(0, _logger2.default)(ctx, requestParams, response, splunkToken); | ||
return response; | ||
}).catch(e => { | ||
console.log('e', e); | ||
_metricLogger('EndSubRequest', { | ||
wasError: 'true', | ||
statusCode: e.response && e.response.status || 500, | ||
elapse: new Date().getTime() - start_time | ||
}); | ||
(0, _logger2.default)(ctx, requestParams, e.response || {}, splunkToken); | ||
return { error: e.response }; | ||
}); | ||
}; | ||
}(); | ||
exports.default = makeApiCall; |
@@ -19,15 +19,22 @@ 'use strict'; | ||
const SPLUNK_ENDPOINT = 'splunk-heavyforwarder-public.vtex.com'; | ||
const splunkEvents = new _splunkEvents2.default(); | ||
const metricLogger = (id, ctx, type = 'none', data, TOKEN, fieldName) => { | ||
const vtex = ctx.vtex; | ||
const headers = ctx.request.headers; | ||
const origin = headers['referer']; | ||
const host = headers['x-forwarded-host']; | ||
const level = 'Debug'; | ||
const workflow_type = 'GCRequestTracing'; | ||
const operationId = headers['x-operationid'] && headers['x-operationid'].split('|') || ('; , ' + headers.cookie).split('; , X-OperationId=').pop().split(';').shift(); | ||
const caller = headers[`x-vtex-caller`].split('@'); | ||
const userAgent = vtex.userAgent.split('@'); | ||
const event = _extends({}, data, { | ||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
var SPLUNK_ENDPOINT = 'splunk-heavyforwarder-public.vtex.com'; | ||
var splunkEvents = new _splunkEvents2.default(); | ||
var metricLogger = function metricLogger(id, ctx) { | ||
var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'none'; | ||
var data = arguments[3]; | ||
var TOKEN = arguments[4]; | ||
var fieldName = arguments[5]; | ||
var vtex = ctx.vtex; | ||
var headers = ctx.request.headers; | ||
var origin = headers['referer']; | ||
var host = headers['x-forwarded-host']; | ||
var level = 'Debug'; | ||
var workflow_type = 'GCRequestTracing'; | ||
var operationId = headers['x-operationid'] && headers['x-operationid'].split('|') || ('; , ' + headers.cookie).split('; , X-OperationId=').pop().split(';').shift(); | ||
var caller = headers['x-vtex-caller'].split('@'); | ||
var userAgent = vtex.userAgent.split('@'); | ||
var event = _extends({}, data, { | ||
resolverName: fieldName, | ||
@@ -47,9 +54,8 @@ requestid: id, | ||
function splunkCustomFetcher(context) { | ||
const headers = context.headers || {}; | ||
var headers = context.headers || {}; | ||
return (0, _axios2.default)(_extends({}, context, { | ||
headers: _extends({}, headers, { | ||
headers: _extends({}, headers, _defineProperty({ | ||
'Proxy-Authorization': vtex.authToken, | ||
'X-Vtex-Proxy-To': `https://${SPLUNK_ENDPOINT}:8088`, | ||
['X-OperationId']: `${operationId && operationId[0]}|${operationId && parseInt(operationId[1]) + 1}` | ||
}) | ||
'X-Vtex-Proxy-To': 'https://' + SPLUNK_ENDPOINT + ':8088' | ||
}, 'X-OperationId', (operationId && operationId[0]) + '|' + (operationId && parseInt(operationId[1]) + 1))) | ||
})); | ||
@@ -59,3 +65,3 @@ } | ||
splunkEvents.config({ | ||
endpoint: `http://${SPLUNK_ENDPOINT}`, | ||
endpoint: 'http://' + SPLUNK_ENDPOINT, | ||
request: splunkCustomFetcher, | ||
@@ -69,5 +75,5 @@ host: host, | ||
} catch (e) { | ||
console.error(`Splunk Events Error: ${e} ${level} ${type} ${event ? JSON.stringify(event) : 'No event data'}`); | ||
console.error('Splunk Events Error: ' + e + ' ' + level + ' ' + type + ' ' + (event ? JSON.stringify(event) : 'No event data')); | ||
} | ||
}; | ||
exports.default = metricLogger; |
{ | ||
"name": "@gocommerce/utils", | ||
"version": "0.6.5", | ||
"version": "0.6.6", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
Sorry, the diff of this file is not supported yet
149520
569