2017 © Pedro PelĆ”ez
 

project shorten

A small PSR-7 and PSR-15 compliant headless url shortener.

image

braid/shorten

A small PSR-7 and PSR-15 compliant headless url shortener.

  • Tuesday, October 24, 2017
  • by justin-schroeder
  • Repository
  • 2 Watchers
  • 5 Stars
  • 1 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 3 Versions
  • 0 % Grown

The README.md

# Shorten

Build Status Scrutinizer Code Quality Code Coverage License, (*1)

Need an easy to use custom URL shortener like bit.ly, t.co, goo.gl? Shorten is a simple, PSR-7 and PSR-15 compliant headless URL shortener made for developers like you., (*2)

Installation

Download

Shorten is a small micro application. It is easily installed with composerā€™s create-project command., (*3)

composer create-project braid/shorten your-shortener-name

Configuration

Shorten comes with two example configuration files. To configure your instance, just copy these files:, (*4)

cp config.example.php config.php
cp phinx.example.yml phinx.yml

config.php

Edit your newly created config.php as appropriate., (*5)

Option Description
base_url You'll want to set your applicationā€™s base_url to the domain name you are using as a shortener (http://bit.ly for example).
api_secret Choose a randomly generated key (>32 bytes recommended). This will be your applicationā€™s Bearer token for api requests.
database Shorten uses Laravelā€™s excellent Eloquent ORM. Configure the database credentials here. MySQL/MariaDB is recommended for medium/high traffic, but a simple SQLite is also supported.

Pro Tip: hereā€™s a quick way to generate an api key:, (*6)

php -r 'echo bin2hex(openssl_random_pseudo_bytes(32)) . "\n";'

phinx.yml

Shorten uses Rob Morganā€™s Phinx for database migrations. Phinx has its own configuration, but the values should be the same as your config.php database settings., (*7)

Database

Once your configuration files have been created and updated, go ahead and create the database you specified in the above configuration file. Then simply run the migrations:, (*8)

vendor/bin/phinx migrate

Server

The last step is to simply point an http server or virtual host to the public directory. This documentation won't go into detail on how to setup Apache or nginx., (*9)

Api

Shorten comes with a simple API for creating, listing, and removing shortened urls., (*10)

Method Endpoint Description
GET /resources List all shortened URLs currently stored.
POST /resources Creates a new URL. Must include a JSON body with a url attribute.
DELETE /resources Removes a shortened URL. Must include a JSON body with an id attribute.

All api requests MUST include an Authorization header in the format:, (*11)

Authorization: Bearer api_secret_here

The return format for redirect resources is JSON. Example:, (*12)

{
  "id": 1,
  "hash": "ce24227c",
  "redirect_to": "http://www.google.com",
  "count": 0,
  "url": "http://bit.ly/ce24227c"
}

Note: Yes DELETE /resources/{id} would be cleaner, but using simple strings allows for faster routing., (*13)

Best practices

Shorten is intended to be a simple set-and-forget service you can use internally at your organization or embed into the apps you build. Keep in mind it is a project and not a dependency, so you are free and encouraged to bolt on additional PSR-15 middleware if you want., (*14)

Shorten is written and maintained by Braid LLC, and offered freely under an MIT license., (*15)

Braid LLC, (*16)

The Versions

24/10 2017

dev-master

9999999-dev http://github.com/wearebraid/shorten

A small PSR-7 and PSR-15 compliant headless url shortener.

  Sources   Download

MIT

The Requires

 

The Development Requires

framework

24/10 2017

1.0.1

1.0.1.0 http://github.com/wearebraid/shorten

A small PSR-7 and PSR-15 compliant headless url shortener.

  Sources   Download

MIT

The Requires

 

The Development Requires

framework

24/10 2017

1.0.0

1.0.0.0 http://github.com/wearebraid/shorten

A small PSR-7 and PSR-15 compliant headless url shortener.

  Sources   Download

MIT

The Requires

 

The Development Requires

framework