Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add syntax highlighting #5

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
152 changes: 86 additions & 66 deletions Readme.md
Original file line number Diff line number Diff line change
@@ -1,90 +1,110 @@
# curl-parser-js
**Final javascript size is 2.58kB only!!**
**Final javascript size is 2.58kB only!!**

Simple javascript library to parse `cUrl command` to `json object`. Regex based matching without adding any complex parser code/library. Can be used in `Node`, in any `frontend project` or as `standalone js file`.
Simple javascript library to parse `cUrl command` to `json object`. Regex based matching without adding any complex parser code/library. Can be used in `Node`, in any `frontend project` or as `standalone js file`.

With the generated json object you may construct your own `ajax` call using your `favourite` library.
With the generated json object you may construct your own `ajax` call using your `favourite` library.

## Usage
## Usage

### Standalone
### Standalone

Add your script tag
Add your script tag

<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/parse-curl.js"></script>
```html
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/parse-curl.js"></script>
```

Parse your cmd
```js
const curlCmd = `curl 'http://server.com:5050/a/c/getName/?param1=pradeep&param2=kumar&param3=sharma'`;
parse_curl_js.parse(curlCmd);
```

const curlCmd = `curl 'http://server.com:5050/a/c/getName/?param1=pradeep&param2=kumar&param3=sharma'`;
parse_curl_js.parse(curlCmd);
Standalone Demo on [Codepen](https://codepen.io/marudhupandiyang/pen/jaXRYp?editors=0010)

Standalone Demo on [Codepen](https://codepen.io/marudhupandiyang/pen/jaXRYp?editors=0010)
### Node/frontend projects who support modules importing.

```js
import Curlparser from 'curl-parser-js';

### Node/frontend projects who support modules importing.
// Assume you have your `cUrl` command as a string constant

import Curlparser from 'curl-parser-js';
const curlCmd = `curl 'http://server.com:5050/a/c/getName'`;
```

Assume you have your `cUrl` command as a string constant
### Execute parser to parse the curl command

const curlCmd = `curl 'http://server.com:5050/a/c/getName'`;
```js
const result = parsecurl(curlCmd);

### Execute parser to parse the curl command
const result = parsecurl(curlCmd);
console.log(JSON.stringify(result, null, 2));
```

`console.log(JSON.stringify(result, null, 2));` will result in

{
"url": "http://server.com:5050/a/c/getName",
"headers": {}
}
will result in:

```json
{
"url": "http://server.com:5050/a/c/getName",
"headers": {}
}
```

### cUrl command with query params

const curlCmd = `curl 'http://server.com:5050/a/c/getName/?param1=pradeep&param2=kumar&param3=sharma'`;
const result = parsecurl(curlCmd);


`console.log(JSON.stringify(result, null, 2));` will result in

{
"url": "http://server.com:5050/a/c/getName/?param1=pradeep&param2=kumar&param3=sharma",
"headers": {},
"queryString": {
"param1": "pradeep",
"param2": "kumar",
"param3": "sharma"
}
}
```js
const curlCmd = `curl 'http://server.com:5050/a/c/getName/?param1=pradeep&param2=kumar&param3=sharma'`;
const result = parsecurl(curlCmd);

console.log(JSON.stringify(result, null, 2));
```
will result in:

```json
{
"url": "http://server.com:5050/a/c/getName/?param1=pradeep&param2=kumar&param3=sharma",
"headers": {},
"queryString": {
"param1": "pradeep",
"param2": "kumar",
"param3": "sharma"
}
}
```

### cUrl command with post data

const curlCmd = `curl 'https://exampleserver.com/api/v5/tracktime/' -H 'origin: https://exampleserver.com' -H 'accept-encoding: gzip, deflate, br' -H 'accept-language: en-GB,en-US;q=0.8,en;q=0.6' -H 'authorization: JWT eyJiOjE1MTIyMTIyNzYsIm9yaiOjE1MTIyMTIyNzYsIm9yaJ9.eyJ2ZXJzaW9uIjoiMjciLCJleHAiOjE1MTIyMTIyNzYsIm9yaiOjE1MTIyMTIyNzYsIm9yaLCJ1c2VyX2lkIjo1MTAsImVtYWlsIjoibWFydWRodS5ndW5iOjE1MTIyMTIyNzYsIm9yam5hbWUiOiJtYXJ1ZGh1Lmd1iOjE1MTIyMTIyNzYiOjE1MTIyMTIyNzYsIm9yafQ._BuiOjE1MTIyMTIyNzYsIm9yadJ__2iOjE1MTIyMTIyNzYsIm9yaRTmNcW0' -H 'content-type: application/json; charset=UTF-8' -H 'accept: */*' -H 'referer: https://exampleserver.com/timeSheetChange' -H 'authority: exampleserver.com' -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36' --data-binary '{"action":"Add custom time","data":"November 27, 2017 - December 03, 2017"}' --compressed`;
const result = parsecurl(curlCmd);

`console.log(JSON.stringify(result, null, 2));` will result in

{
"url": "https://exampleserver.com/api/v5/tracktime/",
"headers": {
"origin": "https",
"accept-encoding": "gzip, deflate, br",
"accept-language": "en-GB,en-US;q=0.8,en;q=0.6",
"authorization": "JWT eyJiOjE1MTIyMTIyNzYsIm9yaiOjE1MTIyMTIyNzYsIm9yaJ9.eyJ2ZXJzaW9uIjoiMjciLCJleHAiOjE1MTIyMTIyNzYsIm9yaiOjE1MTIyMTIyNzYsIm9yaLCJ1c2VyX2lkIjo1MTAsImVtYWlsIjoibWFydWRodS5ndW5iOjE1MTIyMTIyNzYsIm9yam5hbWUiOiJtYXJ1ZGh1Lmd1iOjE1MTIyMTIyNzYiOjE1MTIyMTIyNzYsIm9yafQ._BuiOjE1MTIyMTIyNzYsIm9yadJ__2iOjE1MTIyMTIyNzYsIm9yaRTmNcW0",
"content-type": "application/json; charset=UTF-8",
"accept": "*/*",
"referer": "https",
"authority": "exampleserver.com",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
},
"body": {
"action": "Add custom time",
"data": "November 27, 2017 - December 03, 2017"
}
}

## Roadmap

1. Add plugins to generate request for different libraries.
```js
const curlCmd = `curl 'https://exampleserver.com/api/v5/tracktime/' -H 'origin: https://exampleserver.com' -H 'accept-encoding: gzip, deflate, br' -H 'accept-language: en-GB,en-US;q=0.8,en;q=0.6' -H 'authorization: JWT eyJiOjE1MTIyMTIyNzYsIm9yaiOjE1MTIyMTIyNzYsIm9yaJ9.eyJ2ZXJzaW9uIjoiMjciLCJleHAiOjE1MTIyMTIyNzYsIm9yaiOjE1MTIyMTIyNzYsIm9yaLCJ1c2VyX2lkIjo1MTAsImVtYWlsIjoibWFydWRodS5ndW5iOjE1MTIyMTIyNzYsIm9yam5hbWUiOiJtYXJ1ZGh1Lmd1iOjE1MTIyMTIyNzYiOjE1MTIyMTIyNzYsIm9yafQ._BuiOjE1MTIyMTIyNzYsIm9yadJ__2iOjE1MTIyMTIyNzYsIm9yaRTmNcW0' -H 'content-type: application/json; charset=UTF-8' -H 'accept: */*' -H 'referer: https://exampleserver.com/timeSheetChange' -H 'authority: exampleserver.com' -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36' --data-binary '{"action":"Add custom time","data":"November 27, 2017 - December 03, 2017"}' --compressed`;
const result = parsecurl(curlCmd);

console.log(JSON.stringify(result, null, 2));
```

will result in:

```json

{
"url": "https://exampleserver.com/api/v5/tracktime/",
"headers": {
"origin": "https",
"accept-encoding": "gzip, deflate, br",
"accept-language": "en-GB,en-US;q=0.8,en;q=0.6",
"authorization": "JWT eyJiOjE1MTIyMTIyNzYsIm9yaiOjE1MTIyMTIyNzYsIm9yaJ9.eyJ2ZXJzaW9uIjoiMjciLCJleHAiOjE1MTIyMTIyNzYsIm9yaiOjE1MTIyMTIyNzYsIm9yaLCJ1c2VyX2lkIjo1MTAsImVtYWlsIjoibWFydWRodS5ndW5iOjE1MTIyMTIyNzYsIm9yam5hbWUiOiJtYXJ1ZGh1Lmd1iOjE1MTIyMTIyNzYiOjE1MTIyMTIyNzYsIm9yafQ._BuiOjE1MTIyMTIyNzYsIm9yadJ__2iOjE1MTIyMTIyNzYsIm9yaRTmNcW0",
"content-type": "application/json; charset=UTF-8",
"accept": "*/*",
"referer": "https",
"authority": "exampleserver.com",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
},
"body": {
"action": "Add custom time",
"data": "November 27, 2017 - December 03, 2017"
}
}
```

## Roadmap

1. Add plugins to generate request for different libraries.