HTTP API interface for üWave.

u-wave-api-v1 has been renamed to u-wave-http-api.
Last updated 3 years ago by goto-bus-stop .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install u-wave-api-v1 
SYNC missed versions from official npm registry.


REST API plugin for üWave, the collaborative listening platform.

Getting Started - API - Building - License

Note: üWave is still under development. Particularly the u-wave-core and u-wave-api-v1 modules will change a lot before the "official" 1.0.0 release. Make sure to always upgrade both of them at the same time.

Getting Started

npm install u-wave-api-v1

The module exports a middleware that can be used with express-style HTTP request handlers.


api = createWebApi(uwave, options={})

Creates a middleware for use with Express or another such library. The first parameter is a u-wave-core instance. Available options are:

  • server - An HTTP server instance. u-wave-api-v1 uses WebSockets, and it needs an HTTP server to listen to for incoming WebSocket connections. An example for how to obtain this server from an Express app is shown below.
  • socketPort - The WebSocket server can also listen on its own port instead of attaching to the HTTP server. In that case, specify the port number here.
  • secret - A string or Buffer containing a secret used to encrypt authentication tokens. It's important that this is the same as the secret option passed to the core library.
  • recaptcha - If you want to force ReCaptcha validation on new registrations, pass an object with ReCaptcha options. The only available option is secret, which is the ReCaptcha secret obtained from the "Server-side integration" panel on your ReCaptcha site admin page.
  • mailTransport - nodemailer SMTP options or a transport object, used to send password reset emails.
  • onError - Error handler function, use for recording errors. First parameter is the request object that caused the error, second is the error itself.
import express from 'express';
import stubTransport from 'nodemailer-stub-transport';
import uwave from 'u-wave-core';
import createWebApi from 'u-wave-api-v1';

const app = express();
const server = app.listen();

const secret = fs.readFileSync('./secret.dat');

const uw = uwave({
  secret: secret,
const api = createWebApi(uw, {
  secret: secret, // Encryption secret
  server: server, // HTTP server
  recaptcha: { secret: 'AABBCC...' }, // Optional
  mailTransport: stubTransport(), // Optional
  onError: (req, error) => {}, // Optional

app.use('/v1', api);


Returns a middleware that attaches the üWave core object and the üWave api-v1 object to the request. The u-wave-core instance will be available as req.uwave, and the u-wave-api-v1 instance will be available as req.uwaveApiV1. This is useful if you want to access these objects in custom routes, that are not in the u-wave-api-v1 namespace. E.g.:

app.use('/v1', api);

// A custom profile page.
app.get('/profile/:user', api.attachUwaveToRequest(), (req, res) => {
  const uwave = req.uwave;
  uwave.getUser(req.params.user).then((user) => {
    res.send(`<h1>Profile of user ${user.username}!</h1>`);



The build step compiles the futuristic JavaScript that's used in this repository to code that can be used in engines today, using Babel. To compile the code, run:

npm run build

When developing, it might be useful to recompile automatically on changes instead, using:

npm run watch



Current Tags

  • 0.3.0                                ...           latest (3 years ago)
  • 0.4.0-beta.1                                ...           wlk (3 years ago)

6 Versions

  • 0.4.0-beta.1                                ...           3 years ago
  • 0.3.0 [deprecated]           ...           3 years ago
  • 0.2.2                                ...           4 years ago
  • 0.2.1                                ...           4 years ago
  • 0.2.0                                ...           4 years ago
  • 0.1.0                                ...           4 years ago
Maintainers (2)
Today 1
This Week 1
This Month 1
Last Day 0
Last Week 0
Last Month 1
Dependencies (22)
Dependents (0)

Copyright 2014 - 2016 © taobao.org |