UNPKG

977 BJavaScriptView Raw
1var collect = require('collect-stream')
2var osm2Obj = require('osm2json')
3var toOsm = require('obj2osm')
4var fromArray = require('from2-array')
5
6var errors = require('../errors')
7var isValidContentType = require('../lib/util').isValidContentType
8
9module.exports = function (req, res, api, params, next) {
10 if (!isValidContentType(req)) {
11 return next(new errors.UnsupportedContentType())
12 }
13 var parts = params.id.split(':')
14 var version = parts.length === 2 ? parts[1] : null
15
16 var r = req.pipe(osm2Obj({coerceIds: false}))
17 collect(r, function (err, changes) {
18 if (err || !changes.length) return next(new errors.XmlParseError(err))
19 api.putChanges(changes, params.id, version, function (err, diffResult) {
20 if (err) return next(err)
21 var r = fromArray.obj(diffResult).on('error', next)
22 var t = toOsm({root: 'diffResult'}).on('error', next)
23 res.setHeader('content-type', 'text/xml; charset=utf-8')
24 r.pipe(t).pipe(res)
25 })
26 })
27}