A modern, minimalist, and lightweight URL shortener using Node.js and Redis
Switch branches/tags
Nothing to show
Clone or download
Latest commit 1e5d04a Apr 14, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
config added redis-db option Nov 27, 2016
lib Code cleanup after merge Apr 14, 2018
public Code cleanup after merge Apr 14, 2018
routes Code cleanup after merge Apr 14, 2018
test Code cleanup after merge Apr 14, 2018
views Code cleanup after merge Apr 14, 2018
.editorconfig .editorconfig May 23, 2016
.gitignore Code cleanup after merge Apr 14, 2018
.travis.yml Add .travis.yml May 22, 2016
LICENSE Update LICENSE May 22, 2016
README.md Code cleanup after merge Apr 14, 2018
app.js Hide x-powered-by header May 24, 2016
package.json Update npm packages Apr 14, 2018

README.md

Node Url Shortener

A modern, minimalist, and lightweight URL shortener using Node.js and Redis.

Build Status GitHub tag Dependency Status

Using

Quick Start

$ git clone git@github.com:dotzero/node-url-shortener.git
$ cd nus
$ npm install
$ node app

Command Line Options

$ node app -h

Usage: app [options]

Options:
  -u, --url     Application URL               [default: "http://127.0.0.1:3000"]
  -p, --port    Port number for the Express application          [default: 3000]
  --redis-host  Redis Server hostname                     [default: "localhost"]
  --redis-port  Redis Server port number                         [default: 6379]
  --redis-pass  Redis Server password                           [default: false]
  --redis-db    Redis DB index                                      [default: 0]
  -h, --help    Show help                                              [boolean]

Installation on production

$ git clone git@github.com:dotzero/node-url-shortener.git nus
$ cd nus
$ npm install --production
$ NODE_ENV=production node app --url "http://example.com"

RESTful API

POST /api/v1/shorten with form data long_url=http://google.com, start_date="", end_date="", c_new=false.

NOTE: You can send the post requests without the date and c_new params

POST /api/v1/shorten with form data long_url=http://google.com, start_date="2017/06/19", end_date="2017/06/20", c_new=true

The c_new paramter is do that it creates a new short url if one already exists for the url

{
  "hash": "rnRu",
  "long_url": "http://google.com",
  "short_url": "http://127.0.0.1:3000/rnRu",
  "status_code": 200,
  "status_txt": "OK"
}

GET /api/v1/expand/:hash with query rnRu

{
    "start_date": "undefined",
    "end_date": "undefined",
    "hash": "rnRu",
    "long_url": "http://127.0.0.1:3000/rnRu",
    "clicks": "0",
    "status_code": 200,
    "status_txt": "OK"
}

OR if dates are set

{
    "start_date": "2017/06/19",
    "end_date": "2017/06/20",
    "hash": "rnRu",
    "long_url": "http://127.0.0.1:3000/rnRu",
    "clicks": "0",
    "status_code": 200,
    "status_txt": "OK"
}

Tests

To run the test suite, first install the dependencies, then run npm test:

$ npm install
$ npm test

License

Released under the MIT license