curtus
v1.0.2
Published
A lightweight embeddable URL shortener with a standalone server mode support
Downloads
2
Maintainers
Readme
Curtus
A fast and lightweight URL shortener. You can either deploy it as a standalone service or use as a library. Two ways to store data: either using a built-in synchronous SQLite3 (a good compromise) or an in-memory database (very fast but data is lost in case of restart).
Configuration options
server.port— a port to listen to for HTTP requestsserver.token— authorization token string, set tonullif not usedsalt— a random number from 0 to 10^9, must be constant for a given databaseinMemory— allows running with no file-based DB at allredirectOnError— a URL to redirect to when unpacking failscleanup.checkOnEvery— a number of HTTP requests after which to check for outdated URLscleanup.lifetime— a number in seconds for a minimal URL lifetime
Setup (npm package only)
npm i curtus --save- Test code
const curtus = require('curtus')
curtus.init({/* config object */})
const
quickCode = curtus.db.saveUrl('https://someurl.com/trololo'),
restoredUrl = curtus.db.getCodeUrl(quickCode)
console.log('Code is', quickCode)
console.log('Restored URL is', restoredUrl)
// run this when you need to wipe out old records
curtus.db.removeOldUrls()
// you may run this on your app shutdown to keep things clean
curtus.db.dbShutdown()Setup (server only)
- Create
config.jsonfile with the full or partial structure ofconfig.dist.jsonif you need to change the default configuration. At least we recommend changing the salt. npm ito install the packages.npm run serverto start a local server.
Authorization (server only)
If necessary shortening can be protected when used via a built-in server. Configure server.token value (see above) and
pass the token in a HTTP request header: Authorization: Bearer YOUR_TOKEN_HERE.
Clean server install
If you want to install Curtus to a completely new server feel free to use the installation script provided. Simply run:
docs/linux-install.shTo do
- cover with tests
- add performance tests
- type annotations and perfect code
- extend with optional statistics collection
