* validateQueryAndHeaders - Check request for unsupported queries or headers * @param {object} request - request object * @param {object} log - Werelogs logger * @return {object} - empty object or object with error boolean property
(request, log)
| 22 | * @return {object} - empty object or object with error boolean property |
| 23 | */ |
| 24 | function validateQueryAndHeaders(request, log) { |
| 25 | const reqMethod = request.method; |
| 26 | const reqQuery = request.query; |
| 27 | const reqHeaders = request.headers; |
| 28 | const isBucketQuery = !request.objectKey; |
| 29 | // if the request is at bucket level, check for unsupported bucket queries |
| 30 | if (isBucketQuery) { |
| 31 | const unsupportedQuery = |
| 32 | _validateKeys(constants.unsupportedBucketQueries, reqQuery); |
| 33 | if (unsupportedQuery) { |
| 34 | log.debug('encountered unsupported query', { |
| 35 | query: unsupportedQuery, |
| 36 | method: 'validateQueryAndHeaders', |
| 37 | }); |
| 38 | return { error: errors.NotImplemented }; |
| 39 | } |
| 40 | } |
| 41 | const unsupportedQuery = _validateKeys(constants.unsupportedQueries, |
| 42 | reqQuery); |
| 43 | if (unsupportedQuery) { |
| 44 | log.debug('encountered unsupported query', { |
| 45 | query: unsupportedQuery, |
| 46 | method: 'validateQueryAndHeaders', |
| 47 | }); |
| 48 | return { error: errors.NotImplemented }; |
| 49 | } |
| 50 | const unsupportedHeader = _validateKeys(constants.unsupportedHeaders, |
| 51 | reqHeaders); |
| 52 | if (unsupportedHeader) { |
| 53 | log.debug('encountered unsupported header', { |
| 54 | header: unsupportedHeader, |
| 55 | method: 'validateQueryAndHeaders', |
| 56 | }); |
| 57 | // for now only unsupported headers are encryption headers and we only |
| 58 | // return NotImplemented on a PUT |
| 59 | if (reqMethod.toUpperCase() === 'PUT') { |
| 60 | return { error: errors.NotImplemented }; |
| 61 | } |
| 62 | } |
| 63 | return {}; |
| 64 | } |
| 65 | |
| 66 | module.exports = validateQueryAndHeaders; |
no test coverage detected