Express middleware for multiparty to process OpenRosa form submissions from ODK Collect
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
test
.gitignore
.npmignore
.travis.yml
CHANGELOG.md
README.md
index.js
package.json

README.md

OpenRosa FormSubmissionAPI middleware

travis js-standard-style npm downloads

This is based on connect-multiparty by Andrew Kelley.

It is express middleware for multiparty to process OpenRosa form submissions from ODK Collect following the OpenRosa FormSubmissionAPI spec.

The xml form submission is returned as req.body and any attached files are returned as req.files.

Incoming files are stored on disk in the tmp folder and must be cleanup up afterwards with something like:

req.files.forEach(function(file) {
    fs.unlink(file.path, function() {});
});

Usage

var openrosa = require('openrosa-form-submission-middleware');
var openrosaMiddleware = openrosa();

app.use('/submission', openrosaMiddleware);

app.post('/submission', function(req, res) {
  console.log(req.body, req.files);
  // don't forget to delete all req.files when done
});

API

openrosa(options)

Returns express middleware for receiving and processing OpenRosa form submissions.

  • options.maxContentLength sets the maximum content length of form submissions (defaults to 10Mb)

  • options.secure will redirect OpenRosa clients like ODK Collect to use https to send a submission (it does this by responding to the initial HEAD request from the client with a 204 with the Location headers set with the https protocol set)

Other options are passed directly on to multiparty.