miming

0.0.1 • Public • Published

Miming

Build Status

A very small library for parsing and formatting various different mime types in node.js.

Note: Miming does not deal with content negotiation, you should use another library such as negotiator for that.

Miming supports the following built in mime types:

Installation

Via npm:

npm install miming

Usage

Creating a collection

Create a Collection of MimeTypes that you'd like to handle in your application. Specify the types in order of precedence.

var Miming = require('miming');
 
var collection = new Miming.Collection([
  'HTML',
  'JSON',
  'FormURLEncoded',
  'MultipartFormData'
]);
 
var mime = collection.get('application/json');
mime.should.be.an.instanceOf(Miming.Types.JSON);
 
console.log(mime.format({foo: 'bar'})).should.equal('{"foo":"bar"}');
 

Adding a type to a collection

collection.add('JSONLD');
// or
collection.add('application/json');
// or
collection.add(new Miming.Types.JSONLD());
// or
collection.add(Miming.Types.JSONLD);

Processing requests

Here's a tiny application which parses requests in various formats, translates them to JSON, and echos them back to the client.

var http = require('http'),
    Negotiator = require('negotiator'),
    Miming = require('../lib'),
    collection = new Miming.Collection();
 
collection.add('application/json');
collection.add('application/x-www-form-urlencoded');
collection.add('multipart/form-data');
 
 
http.createServer(function (req, res) {
  if (!req.headers['content-type']) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.end('<form method="POST"><textarea name="content"></textarea><br><button type="submit">Go</button></form>');
    return;
  }
  collection.parse(req)
  .spread(function (body, files) {
    res.writeHead(200, {'Content-Type': 'application/json'});
    return collection.format('application/json', {
      body: body,
      files: files
    })
    .then(res.end.bind(res));
  })
  .done();
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

License

MIT, see LICENSE.md.

Package Sidebar

Install

npm i miming

Weekly Downloads

1

Version

0.0.1

License

MIT

Last publish

Collaborators

  • charlespick