Skip to content

Commit eb8e777

Browse files
committed
first commit
0 parents  commit eb8e777

13 files changed

Lines changed: 332 additions & 0 deletions

File tree

.editorconfig

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# http://editorconfig.org
2+
root = true
3+
4+
[*]
5+
indent_style = space
6+
indent_size = 2
7+
end_of_line = lf
8+
charset = utf-8
9+
trim_trailing_whitespace = true
10+
insert_final_newline = true
11+
12+
[*.md]
13+
trim_trailing_whitespace = false

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.DS_Store
2+
npm-debug.log
3+
node_modules

.jscsrc

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
{
2+
"disallowEmptyBlocks": true,
3+
"disallowKeywords": [
4+
"with"
5+
],
6+
"disallowKeywordsOnNewLine": [
7+
"else"
8+
],
9+
"disallowMixedSpacesAndTabs": true,
10+
"disallowMultipleLineBreaks": true,
11+
"disallowMultipleLineStrings": true,
12+
"disallowMultipleVarDecl": true,
13+
"disallowNewlineBeforeBlockStatements": true,
14+
"disallowPaddingNewlinesInBlocks": true,
15+
"disallowQuotedKeysInObjects": true,
16+
"disallowSpaceAfterObjectKeys": true,
17+
"disallowSpaceAfterPrefixUnaryOperators": true,
18+
"disallowSpaceBeforePostfixUnaryOperators": true,
19+
"disallowSpacesInsideArrayBrackets": true,
20+
"disallowSpacesInsideObjectBrackets": true,
21+
"disallowSpacesInsideParentheses": true,
22+
"disallowTrailingComma": true,
23+
"disallowTrailingWhitespace": true,
24+
"disallowYodaConditions": true,
25+
"maximumLineLength": {
26+
"allowUrlComments": true,
27+
"value": 250
28+
},
29+
"requireBlocksOnNewline": true,
30+
"requireCommaBeforeLineBreak": true,
31+
"requireCurlyBraces": [
32+
"if",
33+
"else",
34+
"for",
35+
"while",
36+
"do",
37+
"try",
38+
"catch"
39+
],
40+
"requireDotNotation": true,
41+
"requireLineFeedAtFileEnd": true,
42+
"requireParenthesesAroundIIFE": true,
43+
"requireSpaceAfterBinaryOperators": true,
44+
"requireSpaceAfterKeywords": true,
45+
"requireSpaceAfterLineComment": true,
46+
"requireSpaceBeforeBinaryOperators": true,
47+
"requireSpaceBeforeBlockStatements": true,
48+
"requireSpaceBeforeObjectValues": true,
49+
"requireSpacesInConditionalExpression": true,
50+
"requireSpacesInFunction": {
51+
"beforeOpeningCurlyBrace": true,
52+
"beforeOpeningRoundBrace": true
53+
},
54+
"safeContextKeyword": [
55+
"self"
56+
],
57+
"validateIndentation": 2,
58+
"validateLineBreaks": "LF",
59+
"validateParameterSeparator": ", ",
60+
"validateQuoteMarks": {
61+
"escape": true,
62+
"mark": "'"
63+
}
64+
}

.jshintrc

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"boss": true,
3+
"eqeqeq": true,
4+
"eqnull": true,
5+
"latedef": true,
6+
"laxbreak": true,
7+
"newcap": false,
8+
"noarg": true,
9+
"node": true,
10+
"quotmark": "single",
11+
"strict": false,
12+
"undef": true,
13+
"unused": "vars",
14+
"predef": [
15+
"beforeEach",
16+
"afterEach",
17+
"describe",
18+
"it",
19+
"log"
20+
]
21+
}

.npmignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
.jscsrc
2+
.jshintrc
3+
.editorconfig
4+
test

README.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# HTTP Snippet
2+
3+
```shell
4+
npm install -g httpsnippet
5+
```
6+
7+
## Usage
8+
9+
```shell
10+
httpsnippet har.json --langauge PHP --output snippet.php
11+
```
12+
13+
### Options
14+
15+
| Name | Description |
16+
| ------------ | ----------------------------------------- |
17+
| `--langauge` | |
18+
| `--output` | |

bin/httpsnippet.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/usr/bin/env node
2+
3+
'use strict';
4+
5+
var commander = require('commander');
6+
var debug = require('debug')('httpsnippet');
7+
var fs = require('fs');
8+
var httpsnippet = require('../src');
9+
var pkg = require('../package.json');
10+
11+
commander
12+
.version(pkg.version)
13+
.usage('<file> [options]')
14+
.option('-l, --language <language>', 'target language')
15+
.parse(process.argv);
16+
17+
if (commander.args.length == 0 || !commander.language) {
18+
commander.help();
19+
}
20+
21+
var sources = commander.args.map(function (file) {
22+
fs.stat(file, function (err, stats) {
23+
if (err) {
24+
return debug(err);
25+
}
26+
27+
if (stats.isFile()) {
28+
fs.readFile(file, function (err, data) {
29+
if (err) {
30+
return debug(err);
31+
}
32+
33+
var har = JSON.parse(data);
34+
35+
var code = httpsnippet(har, commander.language);
36+
37+
console.log(code);
38+
});
39+
}
40+
});
41+
});

package.json

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{
2+
"name": "httpsnippet",
3+
"version": "1.0.0",
4+
"description": "HTTP Request snippet generator for *most* languages",
5+
"main": "./src/index.js",
6+
"bin": "./bin/httpsnippet.js",
7+
"scripts": {
8+
"test": "mocha -R spec"
9+
},
10+
"repository": {
11+
"type": "git",
12+
"url": "[email protected]:ahmadnassri/httpsnippet"
13+
},
14+
"license": "MIT",
15+
"bugs": {
16+
"url": "https://github.com/ahmadnassri/httpsnippet/issues"
17+
},
18+
"homepage": "https://github.com/ahmadnassri/httpsnippet",
19+
"devDependencies": {
20+
"mocha": "^2.0.1",
21+
"should": "^4.2.0"
22+
},
23+
"dependencies": {
24+
"commander": "^2.6.0",
25+
"debug": "^2.1.1"
26+
}
27+
}

src/index.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
'use strict';
2+
3+
var targets = {
4+
curl: require('./targets/curl.js'),
5+
php: require('./targets/php.js')
6+
};
7+
8+
module.exports = function (req, lang, opts) {
9+
var target = targets[lang];
10+
11+
return target.call(target, req, opts);
12+
}

src/targets/curl.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
'use strict';
2+
3+
var util = require('util');
4+
5+
module.exports = function (req, opts) {
6+
var code = [];
7+
8+
code.push('curl -X ' + req.method);
9+
10+
if (req.httpVersion === 'HTTP/1.0') {
11+
code.push('-0');
12+
}
13+
14+
if (req.cookies && req.cookies.length) {
15+
var cookies = req.cookies.map(function(cookie) {
16+
return encodeURIComponent(cookie.name) + '=' + encodeURIComponent(cookie.value);
17+
});
18+
19+
code.push(util.format('-b "%s"', cookies.join('&')));
20+
}
21+
22+
if (req.headers && req.headers.length) {
23+
req.headers.map(function(header) {
24+
code.push(util.format('-H "%s: %s"', header.name, header.value));
25+
});
26+
}
27+
28+
if (req.postData) {
29+
code.push('-d ' + JSON.stringify(req.postData.text));
30+
}
31+
32+
code.push(req.url);
33+
34+
return code.join(' \\\n');
35+
}

0 commit comments

Comments
 (0)