1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- 'use strict'
- /**
- * Module dependencies.
- */
- var bytes = require('bytes')
- var contentType = require('content-type')
- var typeis = require('type-is')
- /**
- * Module exports.
- */
- module.exports = {
- getCharset,
- normalizeOptions
- }
- /**
- * Get the charset of a request.
- *
- * @param {object} req
- * @api private
- */
- function getCharset (req) {
- try {
- return (contentType.parse(req).parameters.charset || '').toLowerCase()
- } catch {
- return undefined
- }
- }
- /**
- * Get the simple type checker.
- *
- * @param {string | string[]} type
- * @return {function}
- */
- function typeChecker (type) {
- return function checkType (req) {
- return Boolean(typeis(req, type))
- }
- }
- /**
- * Normalizes the common options for all parsers.
- *
- * @param {object} options options to normalize
- * @param {string | string[] | function} defaultType default content type(s) or a function to determine it
- * @returns {object}
- */
- function normalizeOptions (options, defaultType) {
- if (!defaultType) {
- // Parsers must define a default content type
- throw new TypeError('defaultType must be provided')
- }
- var inflate = options?.inflate !== false
- var limit = typeof options?.limit !== 'number'
- ? bytes.parse(options?.limit || '100kb')
- : options?.limit
- var type = options?.type || defaultType
- var verify = options?.verify || false
- if (verify !== false && typeof verify !== 'function') {
- throw new TypeError('option verify must be function')
- }
- // create the appropriate type checking function
- var shouldParse = typeof type !== 'function'
- ? typeChecker(type)
- : type
- return {
- inflate,
- limit,
- verify,
- shouldParse
- }
- }
|