From 0cd52a9877c9f679d4aee5ce4206847f8d41f9e3 Mon Sep 17 00:00:00 2001 From: Aldo Torres Date: Thu, 5 Jun 2025 17:06:19 -0500 Subject: [PATCH] feat: adding and implementing headers to request --- index.js | 2 +- src/generator/endpoints.js | 2 +- src/generator/environmentVariablesNames.js | 2 +- src/parser/openapi3/headers.js | 42 ++++++++++++++++++++++ src/parser/swagger2/headers.js | 42 ++++++++++++++++++++++ 5 files changed, 87 insertions(+), 3 deletions(-) create mode 100644 src/parser/openapi3/headers.js create mode 100644 src/parser/swagger2/headers.js diff --git a/index.js b/index.js index 0fd5981..a119828 100644 --- a/index.js +++ b/index.js @@ -86,6 +86,7 @@ _.forEach(endpointsParsed, function (endpointParsed, i) { endpointsParsed[i].bodyResponse = require('./src/parser/'+version+'/body.js')(endpointParsed.verb, endpointParsed.path, true) endpointsParsed[i].authorization = require('./src/parser/authorization.js')(endpointParsed.verb, endpointParsed.path, authorizationTokens) endpointsParsed[i].queryParams = require('./src/parser/'+version+'/queryParams.js')(endpointParsed.verb, endpointParsed.path) + endpointsParsed[i].headers = require('./src/parser/'+version+'/headers.js')(endpointParsed.verb, endpointParsed.path) endpointsParsed[i].summary = require('./src/parser/summary.js')(endpointParsed.verb, endpointParsed.path) endpointsParsed[i].microcks = require('./src/parser/openapi3/microcks.js')(endpointParsed.verb, endpointParsed.path) }); @@ -93,7 +94,6 @@ _.forEach(endpointsParsed, function (endpointParsed, i) { //GENERATOR-------------------------------- */ let endpointsPostman = []; const endpoints = require('./src/generator/endpoints.js')(endpointsParsed); -// console.log(endpoints); _.forEach(endpoints, function (endpoint, i) { for (let index = 0; index < endpoint.count; index++) { diff --git a/src/generator/endpoints.js b/src/generator/endpoints.js index d41d122..7b66d12 100644 --- a/src/generator/endpoints.js +++ b/src/generator/endpoints.js @@ -36,7 +36,7 @@ module.exports = function() { microcks: endpoint.microcks || false, request: { method: endpoint.verb, - header: [], + header: endpoint.headers ? endpoint.headers : [], body: { mode: "raw", raw: "" diff --git a/src/generator/environmentVariablesNames.js b/src/generator/environmentVariablesNames.js index 2201869..d0bd385 100644 --- a/src/generator/environmentVariablesNames.js +++ b/src/generator/environmentVariablesNames.js @@ -42,7 +42,7 @@ module.exports = function() { if(request.header){ for (let i in request.header){ request.header[i].key = extractVariablesFromString(numerateItem,request.header[i].key,items,itemKeys,id); - request.header[i].value = extractVariablesFromString(numerateItem, request.header[i].value, items, itemKeys, id, request.header[i].key === 'Authorization'); + request.header[i].value = typeof request.header[i].value == 'number' || typeof request.header[i].value == 'object' ? request.header[i].value : extractVariablesFromString(numerateItem, request.header[i].value, items, itemKeys, id, request.header[i].key === 'Authorization'); } } if (request.body && request.body.raw) { diff --git a/src/parser/openapi3/headers.js b/src/parser/openapi3/headers.js new file mode 100644 index 0000000..f810947 --- /dev/null +++ b/src/parser/openapi3/headers.js @@ -0,0 +1,42 @@ +/** Part of APIAddicts. See LICENSE fileor full copyright and licensing details. Supported by Madrid Digital and CloudAPPi **/ + +'use strict' + +const _ = require('lodash'); + +module.exports = function() { + + return function get(verb,path){ + if (!_.isObject(global.definition.paths)) { + require('../../utils/error.js')('paths is required') + } + + let parameters = global.definition.paths[path][_.toLower(verb)]['parameters']; + // parameters = replaceRefs(parameters); + let headers = _.filter(parameters, ['in', 'header']) + const result = [] + _.forEach(headers, function(header) { + result.push({ + key: header.name, + type: header.schema.type, + required : header.required, + value: getExamples(header) + }); + }); + return result + }; + + function getExamples(header) { + if (header.example) { + return header.example + } + else { + if (header.hasOwnProperty('examples')) { + const value = header.examples[Object.keys(header.examples)[0]]; + return value[Object.keys(value)[0]]; + } + return header.example; + } + } + +}() \ No newline at end of file diff --git a/src/parser/swagger2/headers.js b/src/parser/swagger2/headers.js new file mode 100644 index 0000000..f810947 --- /dev/null +++ b/src/parser/swagger2/headers.js @@ -0,0 +1,42 @@ +/** Part of APIAddicts. See LICENSE fileor full copyright and licensing details. Supported by Madrid Digital and CloudAPPi **/ + +'use strict' + +const _ = require('lodash'); + +module.exports = function() { + + return function get(verb,path){ + if (!_.isObject(global.definition.paths)) { + require('../../utils/error.js')('paths is required') + } + + let parameters = global.definition.paths[path][_.toLower(verb)]['parameters']; + // parameters = replaceRefs(parameters); + let headers = _.filter(parameters, ['in', 'header']) + const result = [] + _.forEach(headers, function(header) { + result.push({ + key: header.name, + type: header.schema.type, + required : header.required, + value: getExamples(header) + }); + }); + return result + }; + + function getExamples(header) { + if (header.example) { + return header.example + } + else { + if (header.hasOwnProperty('examples')) { + const value = header.examples[Object.keys(header.examples)[0]]; + return value[Object.keys(value)[0]]; + } + return header.example; + } + } + +}() \ No newline at end of file