UNPKG

1.15 kBJavaScriptView Raw
1var collect = require('collect-stream')
2var osm2Obj = require('osm2json')
3
4var isValidContentType = require('../lib/util').isValidContentType
5var errors = require('../errors')
6
7module.exports = function (req, res, api, params, next) {
8 if (!isValidContentType(req)) {
9 return next(new errors.UnsupportedContentType())
10 }
11
12 var r = req.pipe(osm2Obj({coerceIds: false}))
13 collect(r, function (err, ops) {
14 if (err || !ops.length) return next(new errors.XmlParseError(err))
15 if (ops.length !== 1) {
16 return next(new errors.DeleteMultiple())
17 }
18 if (ops[0].type !== params.type) {
19 return next(new errors.TypeMismatch(ops[0].type, params.type))
20 }
21 if (ops[0].id !== params.id) {
22 return next(new errors.IdMismatch(ops[0].id, params.id))
23 }
24 if (!ops[0].changeset) {
25 return next(new errors.MissingChangesetId())
26 }
27 ops[0].action = 'delete'
28 api.putChanges(ops, ops[0].changeset, function (err, diffResult) {
29 if (err) return next(err)
30 res.setHeader('content-type', 'text/plain; charset=utf-8')
31 res.end(diffResult.map(function (el) { return el.old_id }).join('\n'))
32 })
33 })
34}