short

    2.6.0 • Public • Published

    short Build Status Dependency Status Git Tip

    Node.js URL Shortener backed by Mongoose.js

    No Callbacks, just Promises!

    Installation

    $ npm install short

    Basic API Usage

    Generates a Shortened URL Doc, then retrieves it for demo:

    var shortURLPromise
      , short = require('../lib/short');
     
    // connect to mongodb
    short.connect('mongodb://localhost/short');
     
    short.connection.on('error', function(error) {
      throw new Error(error);
    });
     
    // promise to generate a shortened URL.
    var shortURLPromise = short.generate({
      URL : 'http://nodejs.org/'
    });
     
    // gets back the short url document, and then retrieves it
    shortURLPromise.then(function(mongodbDoc) {
      console.log('>> created short URL:');
      console.log(mongodbDoc);
      console.log('>> retrieving short URL: %s', mongodbDoc.hash);
      short.retrieve(mongodbDoc.hash).then(function(result) {
        console.log('>> retrieve result:');
        console.log(result);
        process.exit(0);
      }, function(error) {
        if (error) {
          throw new Error(error);
        }
      });
    }, function(error) {
      if (error) {
        throw new Error(error);
      }
    });

    Listing all Shortened URLs in DB:

    var listURLsPromise
      , short = require('../lib/short');
     
    // connect to mongodb
    short.connect('mongodb://localhost/short');
     
    short.connection.on('error', function(error) {
      throw new Error(error);
    });
     
    // promise to retrieve all shortened URLs
    listURLsPromise = short.list();
     
    // output all resulting shortened url db docs
    listURLsPromise.then(function(URLsDocument) {
      console.log('>> listing (%d) Shortened URLS:', URLsDocument.length);
      console.log(URLsDocument);
      process.exit(0);
    }, function(error) {
      if (error) {
        throw new Error(error);
      }
    });

    Updating the URL or the data fields of an existing Short URL hash

    // Basically, update works like this
    var updatePromise = short.update(hash, updateData);
    // hash => Short url hashcode generated using short.generate()
    // updateData => An object consisting of the new URL and/or the new data object. 
    //               If a key already exists in the current data object, it's value is updated, 
    //               otherwise, it is added and saved to the data object
     
    //This function returns a promise which on resolution returns the new updated object as an argument.

    Here's some working code. hash is assumed to be given

    // The basic Initialisation, Connection, Short URL generation and 
    // retrieval remains the same as depicted in previous examples
     
    // the variable hash contains the short url hash code generated using short.generate()
    var updatePromise = short.update(hash,{
      URL : 'http://www.youtube.com/watch?v=qvsgGtivCgs',
      data: {
        'type' : 'movie-trailer',
        'movie': 'Back To The Future'
      }
    });
    updatePromise.then(function(ShortURLObject) {
      console.log('New URL:', ShortURLObject.URL, '\nNew data:', ShortURLObject.data);
    }, function(error) {
      console.log('Error', error);
    });

    Contribute

    1. Fork
    2. Clone forked repository
    3. Add some sweet code
    4. Tests still passing? Run tests with npm test
    5. Add a test if adding a feature
    6. Pull Request
    7. Instant Karma!

    License (MIT)

    Copyright (c) 2011-2013, Edward Hotchkiss.

    Author: Edward Hotchkiss

    Bitdeli Badge

    Install

    npm i short

    DownloadsWeekly Downloads

    21

    Version

    2.6.0

    License

    MIT

    Last publish

    Collaborators

    • edwardhotchkiss