Need help with short?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

edwardhotchkiss
348 Stars 84 Forks MIT License 352 Commits 5 Opened issues

Description

Promise-based Node.js URL Shortener backed by Mongoose.js

Services available

!
?

Need anything else?

Contributors list

# 112,611
Dart
Shell
Go
217 commits
# 210,319
HTML
PHP
Shell
10 commits
# 111,256
Python
Shell
C++
entrepr...
5 commits
# 268,261
CSS
api-tes...
webserv...
GraphQL
3 commits
# 449,238
JavaScr...
Mongoos...
2 commits
# 560,752
JavaScr...
2 commits
# 429,438
JavaScr...
Shell
2 commits
# 662,027
JavaScr...
1 commit
# 102,709
Swift
Objecti...
Shell
1 commit
# 96,577
HTML
lightbo...
thumbna...
Shell
1 commit
# 9,793
autohot...
ahk
bitwise...
Nette
1 commit

short Build Status Dependency Status

NPM

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 ```javascript // 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

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.