0.5.118 • Published 5 months ago

larvitreqparser v0.5.118

Weekly downloads
58
License
ISC
Repository
github
Last release
5 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

9 months ago

0.5.114

6 months ago

0.5.113

7 months ago

0.5.116

6 months ago

0.5.115

6 months ago

0.5.110

7 months ago

0.5.112

7 months ago

0.5.111

7 months ago

0.5.107

9 months ago

0.5.106

9 months ago

0.5.109

8 months ago

0.5.108

8 months ago

0.5.118

5 months ago

0.5.117

5 months ago

0.5.103

9 months ago

0.5.104

9 months ago

0.5.98

11 months ago

0.5.99

10 months ago

0.5.96

11 months ago

0.5.97

11 months ago

0.5.102

10 months ago

0.5.101

10 months ago

0.5.100

10 months ago

0.5.94

12 months ago

0.5.95

11 months ago

0.5.92

1 year ago

0.5.93

12 months ago

0.5.90

1 year ago

0.5.91

1 year 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

1 year 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

2 years ago

0.5.68

2 years ago

0.5.67

2 years ago

0.5.66

2 years ago

0.5.65

2 years ago

0.5.64

2 years 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

3 years ago

0.5.33

3 years ago

0.5.31

3 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

3 years ago

0.5.21

3 years ago

0.5.22

3 years ago

0.5.20

3 years ago

0.5.29

3 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

5 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

6 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

7 years ago

0.4.1

7 years ago

0.4.0

7 years ago

0.3.2

7 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

8 years ago

0.1.1

8 years ago

0.1.0

8 years ago