Socket
Socket
Sign inDemoInstall

postman-code-generators

Package Overview
Dependencies
Maintainers
2
Versions
61
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

postman-code-generators - npm Package Compare versions

Comparing version 0.2.0-beta.0 to 0.2.0

check.js

1

codegens/http/lib/code-http-converter.js

@@ -32,2 +32,3 @@ let utils = require('./util');

options = utils.sanitizeOptions(options, getOptions());
utils.parseURLVariable(request);
snippet = `${request.method} ${utils.getEndPoint(request)} HTTP/1.1\n`;

@@ -34,0 +35,0 @@ snippet += `Host: ${utils.getHost(request)}\n`;

@@ -121,2 +121,23 @@ let _ = require('./lodash'),

/**
* parses variable of request url object and sets hostname, path and query in request object
*
* @param {Object} request - Postman SDK request object
*/
function parseURLVariable (request) {
const variableArray = _.get(request.toJSON(), 'url.variable', []);
if (!variableArray.length) {
return;
}
variableArray.forEach(function (variableArrayElement) {
request.url.path.forEach(function (pathArrayElement, pathArrayElementIndex) {
if (pathArrayElement === ':' + variableArrayElement.key) {
request.url.path[pathArrayElementIndex] = variableArrayElement.value;
}
});
});
}
/**
* Returns the request end-point as a string.

@@ -370,2 +391,3 @@ *

module.exports = {
parseURLVariable: parseURLVariable,
getEndPoint: getEndPoint,

@@ -372,0 +394,0 @@ getHost: getHost,

4

codegens/http/test/resources/expected-http-messages.json

@@ -8,3 +8,3 @@ {

"POST /post HTTP/1.1\nHost: postman-echo.com\nContent-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW\n\n----WebKitFormBoundary7MA4YWxkTrZu0gW\nContent-Disposition: form-data; name=\"pl\"\n\n'a'\n----WebKitFormBoundary7MA4YWxkTrZu0gW\nContent-Disposition: form-data; name=\"qu\"\n\n\"b\"\n----WebKitFormBoundary7MA4YWxkTrZu0gW\nContent-Disposition: form-data; name=\"hdjkljh\"\n\nc\n----WebKitFormBoundary7MA4YWxkTrZu0gW\nContent-Disposition: form-data; name=\"sa\"\n\nd\n----WebKitFormBoundary7MA4YWxkTrZu0gW\nContent-Disposition: form-data; name=\"Special\"\n\n!@#$%&*()^_+=`~ \n----WebKitFormBoundary7MA4YWxkTrZu0gW\nContent-Disposition: form-data; name=\"more\"\n\n,./';[]}{\":?><|\\\\\n----WebKitFormBoundary7MA4YWxkTrZu0gW\n",
"POST /:action?a=!@$^*()_-`%26&b=,./';[]}{\":/?><|| HTTP/1.1\nHost: postman-echo.com\n\n\n",
"POST /post?a=!@$^*()_-`%26&b=,./';[]}{\":/?><|| HTTP/1.1\nHost: postman-echo.com\n\n\n",
"POST /post HTTP/1.1\nHost: postman-echo.com\nContent-Type: application/x-www-form-urlencoded\n\nDuis posuere augue vel cursus pharetra. In luctus a ex nec pretium. Praesent neque quam, tincidunt nec leo eget, rutrum vehicula magna.\nMaecenas consequat elementum elit, id semper sem tristique et. Integer pulvinar enim quis consectetur interdum volutpat.!@#$%^&*()+POL:},'';,[;[;\n\n\n",

@@ -16,3 +16,3 @@ "POST /post HTTP/1.1\nHost: postman-echo.com\nContent-Type: application/x-www-form-urlencoded\n\n1='a'&2=\"b\"&'3'=c&\"4\"=d&Special=!@#$%&*()^_=`~ &more=,./';[]}{\":?><|\\\\ ",

"POST /post HTTP/1.1\nHost: postman-echo.com\nContent-Type: text/html\n\n<html>\n Test Test !@#$%^&*()+POL:},'';,[;[;\n</html>",
"POST /:action?a=''&b=\"\" HTTP/1.1\nHost: postman-echo.com\n\n\n",
"POST /post?a=''&b=\"\" HTTP/1.1\nHost: postman-echo.com\n\n\n",
"PUT /put HTTP/1.1\nHost: postman-echo.com\nContent-Type: text/plain\n\nEtiam mi lacus, cursus vitae felis et, blandit pellentesque neque. Vestibulum eget nisi a tortor commodo dignissim.\nQuisque ipsum ligula, faucibus a felis a, commodo elementum nisl. Mauris vulputate sapien et tincidunt viverra. Donec vitae velit nec metus.",

@@ -19,0 +19,0 @@ "PATCH /patch HTTP/1.1\nHost: postman-echo.com\nContent-Type: text/plain\n\nCurabitur auctor, elit nec pulvinar porttitor, ex augue condimentum enim, eget suscipit urna felis quis neque.\nSuspendisse sit amet luctus massa, nec venenatis mi. Suspendisse tincidunt massa at nibh efficitur fringilla. Nam quis congue mi. Etiam volutpat.",

@@ -56,6 +56,6 @@ var _ = require('./lodash'),

bodySnippet += 'NSMutableData *postData = [[NSMutableData alloc] initWithData:[@"' +
key + '=' + sanitize(value, trim) + '" dataUsingEncoding:NSUTF8StringEncoding]];\n';
sanitize(key, true) + '=' + sanitize(value, trim) + '" dataUsingEncoding:NSUTF8StringEncoding]];\n';
}
else {
bodySnippet += '[postData appendData:[@"&' + key + '=' + sanitize(value, trim) +
bodySnippet += '[postData appendData:[@"&' + sanitize(key, true) + '=' + sanitize(value, trim) +
'" dataUsingEncoding:NSUTF8StringEncoding]];\n';

@@ -81,4 +81,9 @@ }

key,
foundFile = false,
value;
if (_.isEmpty(body)) {
return bodySnippet;
}
bodySnippet += 'NSArray *parameters = @[';

@@ -91,2 +96,3 @@

if (data.type === 'file') {
foundFile = true;
formDataArray.push(`\n${indent}@{ @"name": @"${key}", @"fileName": @"${data.src}" }`);

@@ -100,22 +106,30 @@ }

bodySnippet += formDataArray.join(', ');
bodySnippet += ' ];\n';
bodySnippet += 'NSString *boundary = @"----WebKitFormBoundary7MA4YWxkTrZu0gW";\n';
bodySnippet += ' \n];\n';
bodySnippet += '\nNSString *boundary = @"----WebKitFormBoundary7MA4YWxkTrZu0gW";\n';
bodySnippet += 'NSError *error;\n';
bodySnippet += 'NSMutableString *body = [NSMutableString string];\n';
bodySnippet += 'for (NSDictionary *param in parameters) {\n';
bodySnippet += '\nfor (NSDictionary *param in parameters) {\n';
bodySnippet += indent + '[body appendFormat:@"--%@\\r\\n", boundary];\n';
bodySnippet += indent + 'if (param[@"fileName"]) {\n';
// eslint-disable-next-line max-len
bodySnippet += indent.repeat(2) + '[body appendFormat:@"Content-Disposition:form-data; name="%@"; filename="%@"\\r\\n", param[@"name"], param[@"fileName"]];\n';
bodySnippet += indent.repeat(2) + '[body appendFormat:@"Content-Type: %@\\r\\n\\r\\n", param[@"contentType"]];\n';
bodySnippet += indent.repeat(2) + '[body appendFormat:@"%@", [NSString stringWithContentsOfFile:param[@"fileName"]';
bodySnippet += indent.repeat(2) + ' encoding:NSUTF8StringEncoding error:&error]];\n';
bodySnippet += indent.repeat(2) + 'if (error) {\n';
bodySnippet += indent.repeat(3) + 'NSLog(@"%@", error);\n';
bodySnippet += indent.repeat(2) + '}\n';
bodySnippet += indent + '} else {\n';
bodySnippet += indent.repeat(2) +
'[body appendFormat:@"Content-Disposition:form-data; name="%@"\\r\\n\\r\\n", param[@"name"]];\n';
bodySnippet += indent.repeat(2) + '[body appendFormat:@"%@", param[@"value"]];\n';
bodySnippet += indent + '}\n';
if (foundFile) {
bodySnippet += indent + 'if (param[@"fileName"]) {\n';
// eslint-disable-next-line max-len
bodySnippet += indent.repeat(2) + '[body appendFormat:@"Content-Disposition:form-data; name=\\"%@\\"; filename=\\"%@\\"\\r\\n", param[@"name"], param[@"fileName"]];\n';
bodySnippet += indent.repeat(2) + '[body appendFormat:@"Content-Type: %@\\r\\n\\r\\n", param[@"contentType"]];\n';
// eslint-disable-next-line max-len
bodySnippet += indent.repeat(2) + '[body appendFormat:@"%@", [NSString stringWithContentsOfFile:param[@"fileName"]' +
' encoding:NSUTF8StringEncoding error:&error]];\n';
bodySnippet += indent.repeat(2) + 'if (error) {\n';
bodySnippet += indent.repeat(3) + 'NSLog(@"%@", error);\n';
bodySnippet += indent.repeat(2) + '}\n';
bodySnippet += indent + '} else {\n';
bodySnippet += indent.repeat(2) +
'[body appendFormat:@"Content-Disposition:form-data; name=\\"%@\\"\\r\\n\\r\\n", param[@"name"]];\n';
bodySnippet += indent.repeat(2) + '[body appendFormat:@"%@", param[@"value"]];\n';
bodySnippet += indent + '}\n';
}
else {
bodySnippet += indent +
'[body appendFormat:@"Content-Disposition:form-data; name=\\"%@\\"\\r\\n\\r\\n", param[@"name"]];\n';
bodySnippet += indent + '[body appendFormat:@"%@", param[@"value"]];\n';
}
bodySnippet += '}\n';

@@ -168,12 +182,12 @@ bodySnippet += '[body appendFormat:@"\\r\\n--%@--\\r\\n", boundary];\n';

}
headerString = indent + 'NSDictionary *headers = @{\n';
headerString = 'NSDictionary *headers = @{\n';
_.forEach(headersArray, function (header) {
if (!header.disabled) {
headerDictionary.push(indent.repeat(2) + '@"' + header.key + '": @"' + sanitize(header.value, trim) + '"');
headerDictionary.push(indent + '@"' + header.key + '": @"' + sanitize(header.value, trim) + '"');
}
});
headerString += headerDictionary.join(',\n');
headerString += '\n' + indent + '};\n';
headerString += indent + '[request setAllHTTPHeaderFields:headers];\n';
headerString += '\n};\n\n';
headerString += '[request setAllHTTPHeaderFields:headers];\n';
return headerString;

@@ -185,4 +199,6 @@ }

var indent,
codeSnippet,
codeSnippet = '',
requestTimeout,
headerSnippet = '#import <Foundation/Foundation.h>\n',
footerSnippet = '',
trim;

@@ -250,4 +266,6 @@ options = sanitizeOptions(options, self.getOptions());

}
codeSnippet = '#import <Foundation/Foundation.h>\n';
if (options.includeBoilerplate) {
headerSnippet += 'int main(int argc, const char * argv[]) {\n\n';
footerSnippet += '}';
}
codeSnippet += 'NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"' +

@@ -263,3 +281,3 @@ encodeURI(request.url.toString()) + '"]\n';

codeSnippet += parseBody(request.body ? request.body.toJSON() : {}, indent, trim) + '\n';
codeSnippet += '[request setHTTPMethod:@"' + request.method + '"];\n';
codeSnippet += '[request setHTTPMethod:@"' + request.method + '"];\n\n';
codeSnippet += 'NSURLSession *session = [NSURLSession sharedSession];\n';

@@ -273,7 +291,14 @@ codeSnippet += 'NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request\n';

codeSnippet += `${indent.repeat(2)}NSLog(@"%@", httpResponse);\n`;
codeSnippet += `${indent.repeat(2)}dispatch_semaphore_signal(sema);\n`;
codeSnippet += `${indent}}\n`;
codeSnippet += '}];\n';
codeSnippet += '[dataTask resume];';
codeSnippet += '[dataTask resume];\n';
codeSnippet += 'dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);';
callback(null, codeSnippet);
// if boilerplate is included then two more indent needs to be added in snippet
(options.includeBoilerplate) &&
(codeSnippet = indent + codeSnippet.split('\n').join('\n' + indent) + '\n');
callback(null, headerSnippet + codeSnippet + footerSnippet);
},

@@ -313,2 +338,9 @@ getOptions: function () {

description: 'Remove white space and additional lines that may affect the server\'s response'
},
{
name: 'Include boilerplate',
id: 'includeBoilerplate',
type: 'boolean',
default: false,
description: 'Include class definition and import statements in snippet'
}

@@ -315,0 +347,0 @@ ];

@@ -92,3 +92,3 @@ var _ = require('./lodash'),

snippet += '$request = new HTTP_Request2();\n';
snippet += `$request->setUrl('${request.url.toString()}');\n`;
snippet += `$request->setUrl('${sanitize(request.url.toString())}');\n`;
snippet += '$request->setMethod(';

@@ -185,8 +185,8 @@ if (ALLOWED_METOHDS.includes(request.method)) {

snippet += `${indentString}if ($response->getStatus() == 200) {\n`;
snippet += `${indentString.repeat(2)} echo $response->getBody();\n`;
snippet += `${indentString}} else {\n`;
snippet += `${indentString.repeat(2)}echo $response->getBody();\n`;
snippet += `${indentString}}\n${indentString}else {\n`;
snippet += `${indentString.repeat(2)}echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .\n`;
snippet += `${indentString.repeat(3)}$response->getReasonPhrase();\n`;
snippet += `${indentString.repeat(2)}$response->getReasonPhrase();\n`;
snippet += `${indentString}}\n`;
snippet += '} catch(HTTP_Request2_Exception $e) {\n';
snippet += '}\ncatch(HTTP_Request2_Exception $e) {\n';
snippet += `${indentString}echo 'Error: ' . $e->getMessage();\n}`;

@@ -193,0 +193,0 @@ return callback(null, snippet);

@@ -36,3 +36,3 @@ var _ = require('../lodash'),

});
bodySnippet += `$request->addPostParameter(array(\n${bodyDataMap.join(',\n')}));\n`;
bodySnippet += `$request->addPostParameter(array(\n${bodyDataMap.join(',\n')}\n));\n`;
}

@@ -52,3 +52,3 @@ break;

if (bodyDataMap.length) {
bodySnippet += `$request->addPostParameter(array(\n${bodyDataMap.join(',\n')}));\n`;
bodySnippet += `$request->addPostParameter(array(\n${bodyDataMap.join(',\n')}\n));\n`;
}

@@ -55,0 +55,0 @@ if (bodyFileMap.length) {

@@ -15,3 +15,3 @@ module.exports = {

inputString = inputTrim && typeof inputTrim === 'boolean' ? inputString.trim() : inputString;
return inputString.replace(/\\/g, '\\\\').replace(/'/g, '\\\'');
return inputString.replace(/\\/g, '\\\\').replace(/'/g, '\\\'').replace(/\n/g, '\\n');
},

@@ -18,0 +18,0 @@

@@ -123,7 +123,2 @@ var _ = require('./lodash'),

});
request.body.update({
mode: 'formdata',
formdata: formdataArray
});
}

@@ -130,0 +125,0 @@ if (isFormDataFile) {

@@ -16,3 +16,3 @@ var _ = require('../lodash'),

var requestBody = '',
bodyMap,
bodyMap = [],
enabledBodyList;

@@ -56,6 +56,6 @@

if (!_.isEmpty(enabledBodyList)) {
bodyMap = _.map(enabledBodyList, function (value) {
_.forEach(enabledBodyList, function (value) {
if (value.type === 'text') {
return `${sanitize(value.key, request.body.mode, trimRequestBody)}=` +
`${sanitize(value.value, request.body.mode, trimRequestBody)}`;
bodyMap.push(`${sanitize(value.key, request.body.mode, trimRequestBody)}=` +
`${sanitize(value.value, request.body.mode, trimRequestBody)}`);
}

@@ -62,0 +62,0 @@ });

{
"name": "postman-code-generators",
"version": "0.2.0-beta.0",
"version": "0.2.0",
"description": "Generates code snippets for a postman collection",

@@ -5,0 +5,0 @@ "main": "index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc