All files index.js

94.44% Statements 17/18
100% Branches 2/2
85.71% Functions 6/7
94.44% Lines 17/18

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 371x     4x 4x 4x 4x 4x   4x 4x 4x   1x 1x 1x   3x   4x               4x         4x     1x  
const xml = require('fast-xml-parser')
 
function xmlParser (options) {
  return function parseXML (req) {
    return new Promise((resolve, reject) => {
      let body = ''
      req.on('data', chunk => {
        body += chunk
      })
      req.on('end', () => {
        const result = xml.validate(body)
        if (result.err) {
          // Adapt to Felid's default error hander.
          result.err.message = result.err.msg
          reject(result.err)
          return
        }
        resolve(xml.parse(body, options))
      })
      req.on('error', err => {
        reject(err)
      })
    })
  }
}
 
function plugin (felid, options) {
  const opt = {
    types: ['text/xml', 'application/xml'],
    ...options
  }
 
  felid.addParser(opt.types, xmlParser(opt))
}
 
module.exports = plugin