mirror of https://github.com/pelias/api.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.2 KiB
39 lines
1.2 KiB
const _ = require('lodash'); |
|
|
|
const non_admin_fields = ['number', 'street', 'query', 'category']; |
|
|
|
function hasAnyNonAdminFields(parsed_text) { |
|
return !_.isEmpty( |
|
_.intersection( |
|
_.keys(parsed_text), |
|
non_admin_fields)); |
|
} |
|
|
|
function _sanitize( raw, clean ){ |
|
// error & warning messages |
|
const messages = { errors: [], warnings: [] }; |
|
|
|
// bail early if analysis isn't admin-only |
|
if (_.isUndefined(clean.parsed_text) || hasAnyNonAdminFields(clean.parsed_text)) { |
|
return messages; |
|
} |
|
|
|
// the analysis is admin-only, so add errors or warnings if geonames was requested |
|
if (_.isEqual(clean.sources, ['geonames'])) { |
|
// if requested sources is only geonames, return an error |
|
messages.errors.push('input contains only administrative area data, ' + |
|
'no results will be returned when sources=geonames'); |
|
|
|
} else if (_.includes(clean.sources, 'geonames')) { |
|
// if there are other sources besides geonames, return an warning |
|
messages.warnings.push('input contains only administrative area data, ' + |
|
'geonames results will not be returned'); |
|
|
|
} |
|
|
|
return messages; |
|
} |
|
|
|
module.exports = () => ({ |
|
sanitize: _sanitize |
|
});
|
|
|