Create a short URI based on UUID and current time
CoffeeScript Shell
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src
test
.gitignore
LICENSE
Makefile
README.md
package.json

README.md

Short URI Maker

Given a UUID string and a UNIX timestamp in milliseconds, make a short URI slug that can be tagged onto a domain. Each character of the slug is a letter (lower and upper), a digit, a hyphen, a period, an underscore, or a tilde, to be completely ANSI-URI-compliant. The slug contains two concatenated components--a unique ID slug and a time-since slug.

Install

npm install coffee-script -g
npm install uuid-time-uri

Configuration

The maker is configured using:

utUri.configure({ ... options ... });

And the options are as follows:

{Number} [definition = 8] A number between 1 and 32

A number of characters is taken from the UUID as digest for the slug, excluding dashes. A UUID is 32 characters long and thus valid value is 1 - 32. Default is 8.

{String} [domain]

An optional domain can be provided to be inserted before the slug.

{Number} [epoch = 1357016400000] A positive number

An epoch can be defined as the number of milliseconds since the UNIX Epoch (i.e. 1970-01-01) on which the counting for the URI starts. Defaulf to 2013-01-01.

{Number} [granularity = 86400] A positive number

A granularity, defined as a number of milliseconds, is provided to serve as a unit of counts. For instance, if the granularity is a second, represented as 1, the time-since slug represents the number of milliseconds since the defined epoch. Default to a day.

Usage

Simply call make() with the following arguments:

{String} uuid The UUID (with or without dashes) {Number} time UNIX timestamp

Examples

var utUri = require('uuid-time-uri');
var utUri epoch = new Date(2013, 01, 01);
var date = new Date(2014, 01, 01);
var month = 60 * 60 * 24 * 30;
var output = null;

utUri.configure({
  definition: 8
  epoch: epoch.getTime(),
  domain: 'example.com',
  granularity: month
});

output = utUri.make('550e8400-e29b-41d4-a716-446655440000', date.getTime());

console.log(output); // Equals 'example.com/19DdWCC'