0.5.118 • Published 3 months ago

larvitreqparser v0.5.118

Weekly downloads
58
License
ISC
Repository
github
Last release
3 months ago

Build Status

Request parser middleware

Middleware for larvitbase or express to handle parsing url, forms and file uploads. This is just a wrapper for the following libraries:

As a little bonus, it is also setting a request uuid to identify every request in logs etc.

Installation

npm i --save larvitreqparser

Usage

Larvitbase

Usage with larvitbase

const App = require('larvitbase');
const ReqParser = require('larvitreqparser');
const reqParser = new ReqParser({
	// OPTIONAL
	'fs': require('fs-extra'), // Needs some extra functions from fs-extra
	'log': new (require('larvitutils').Log(), // Compatible with the winston logging library
	'storage': 'memory', // Default. Options: 'memory' or a file path, for example '/tmp'.
	'busboyOptions': {} // Custom busboy options, see https://github.com/mscdex/busboy for options
});

new App({
	'httpOptions': 8001,
	'middleware': [
		reqParser.parse.bind(reqParser), // We must bind() the context or we'll lose it
		function (req, res) {
			// Now the following properties is populated depending on the request type:

			// req.urlParsed - URL parsed by require('url').parse()

			// Will be populated when a HTML form is posted either as multipart or as default html form.
			// req.formFields

			// Will be populated when a HTML multipart form is posted with files
			// !!! NOT when sending just a single file as body, that will only populate req.rawBody (see below)
			// req.formFiles[fieldName].filename
			// req.formFiles[fieldName].mimetype
			// req.formFiles[fieldName].encoding

			// If storage === 'memory'
			// req.rawBody
			// req.formFiles[fieldName].buffer (Only when multipart form is posted)

			// If storage is path on disk
			// req.rawBodyPath
			// req.formFiles[fieldName].path (Only when multipart form is posted)

			res.end('Hello world');
		}
	]
});

Cleanup when not using memory

When not using memory, files are stored on disk. They must be manually removed or they will just fill up infinitly!

const App = require('larvitbase');
const ReqParser = require('larvitreqparser');
const reqParser = new ReqParser({
	'storage': '/tmp'
});
const fs = require('fs');

new App({
	'httpOptions': 8001,
	'middleware': [
		reqParser.parse,
		function (req, res, cb) {
			res.end('Hello world');
			cb();
		},
		reqParser.clean
	]
});

If a file should not be cleaned up for some reason a flag can be set on the formFile object to indicate manual cleanup:

function middleware(req, res, cb) {
	req.formFiles.myFile.manualCleanup = true; // Tell larvitreqparser clean function not to remove the file

	doSomethingAsyncWithTheFile(req.formFiles.myFile, function() {
		// Manually remove the file when we are done with it
	});

	cb(); // We continue before async work on the file is completed
}

Changelog

  • 0.4.7 - Added simplest possible declaration file for package to work with typescript
0.5.105

8 months ago

0.5.114

5 months ago

0.5.113

5 months ago

0.5.116

4 months ago

0.5.115

5 months ago

0.5.110

6 months ago

0.5.112

5 months ago

0.5.111

6 months ago

0.5.107

7 months ago

0.5.106

7 months ago

0.5.109

6 months ago

0.5.108

7 months ago

0.5.118

3 months ago

0.5.117

4 months ago

0.5.103

8 months ago

0.5.104

8 months ago

0.5.98

9 months ago

0.5.99

9 months ago

0.5.96

10 months ago

0.5.97

9 months ago

0.5.102

8 months ago

0.5.101

9 months ago

0.5.100

9 months ago

0.5.94

10 months ago

0.5.95

10 months ago

0.5.92

11 months ago

0.5.93

11 months ago

0.5.90

12 months ago

0.5.91

11 months ago

0.5.87

1 year ago

0.5.88

1 year ago

0.5.85

1 year ago

0.5.86

1 year ago

0.5.83

1 year ago

0.5.84

1 year ago

0.5.82

1 year ago

0.5.89

12 months ago

0.5.81

1 year ago

0.5.80

1 year ago

0.5.79

1 year ago

0.5.78

1 year ago

0.5.77

1 year ago

0.5.76

1 year ago

0.5.75

1 year ago

0.5.74

1 year ago

0.5.73

1 year ago

0.5.72

1 year ago

0.5.71

1 year ago

0.5.70

1 year ago

0.5.69

1 year ago

0.5.68

1 year ago

0.5.67

1 year ago

0.5.66

1 year ago

0.5.65

1 year ago

0.5.64

1 year ago

0.5.63

2 years ago

0.5.59

2 years ago

0.5.61

2 years ago

0.5.62

2 years ago

0.5.60

2 years ago

0.5.58

2 years ago

0.5.54

2 years ago

0.5.55

2 years ago

0.5.52

2 years ago

0.5.53

2 years ago

0.5.51

2 years ago

0.5.56

2 years ago

0.5.57

2 years ago

0.5.50

2 years ago

0.5.43

2 years ago

0.5.44

2 years ago

0.5.49

2 years ago

0.5.47

2 years ago

0.5.48

2 years ago

0.5.45

2 years ago

0.5.46

2 years ago

0.5.41

2 years ago

0.5.42

2 years ago

0.5.40

2 years ago

0.5.32

2 years ago

0.5.33

2 years ago

0.5.31

2 years ago

0.5.38

2 years ago

0.5.39

2 years ago

0.5.36

2 years ago

0.5.37

2 years ago

0.5.34

2 years ago

0.5.35

2 years ago

0.5.30

2 years ago

0.5.21

3 years ago

0.5.22

3 years ago

0.5.20

3 years ago

0.5.29

2 years ago

0.5.27

3 years ago

0.5.28

3 years ago

0.5.25

3 years ago

0.5.26

3 years ago

0.5.23

3 years ago

0.5.24

3 years ago

0.5.18

3 years ago

0.5.19

3 years ago

0.5.16

3 years ago

0.5.17

3 years ago

0.5.15

3 years ago

0.5.10

3 years ago

0.5.11

3 years ago

0.5.8

3 years ago

0.5.7

3 years ago

0.5.9

3 years ago

0.5.14

3 years ago

0.5.12

3 years ago

0.5.13

3 years ago

0.5.6

3 years ago

0.5.5

3 years ago

0.5.4

3 years ago

0.5.3

3 years ago

0.5.2

3 years ago

0.5.1

3 years ago

0.5.0

3 years ago

0.4.13

4 years ago

0.4.12

5 years ago

0.4.11

5 years ago

0.4.10

5 years ago

0.4.9

5 years ago

0.4.8

5 years ago

0.4.7

5 years ago

0.4.6

6 years ago

0.4.5

6 years ago

0.4.4

6 years ago

0.4.3

6 years ago

0.4.2

6 years ago

0.4.1

6 years ago

0.4.0

6 years ago

0.3.2

6 years ago

0.3.1

7 years ago

0.2.2

7 years ago

0.3.0

7 years ago

0.2.1

7 years ago

0.2.0

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago