All Projects → LaraCrafts → Laravel Url Shortener

LaraCrafts / Laravel Url Shortener

Licence: mit
Powerful URL shortening tools in Laravel

Projects that are alternatives of or similar to Laravel Url Shortener

Laravel Postal Code Validation
Worldwide postal code validation for Laravel and Lumen
Stars: ✭ 278 (+247.5%)
Mutual labels:  laravel, laravel-package, lumen
Laravel Source Encrypter
Laravel and Lumen Source Code Encrypter
Stars: ✭ 175 (+118.75%)
Mutual labels:  laravel, laravel-package, lumen
Laravel Short Url
A Laravel package to shorten urls
Stars: ✭ 127 (+58.75%)
Mutual labels:  laravel, laravel-package, url
Jwt Auth Guard
JWT Auth Guard for Laravel and Lumen Frameworks.
Stars: ✭ 319 (+298.75%)
Mutual labels:  laravel, laravel-package, lumen
Laravel Email Verification
Laravel package to handle user verification using an activation mail
Stars: ✭ 63 (-21.25%)
Mutual labels:  laravel, laravel-package
Laravel Pdf
A Simple package for easily generating PDF documents from HTML. This package is specially for laravel but you can use this without laravel.
Stars: ✭ 79 (-1.25%)
Mutual labels:  laravel, laravel-package
Laravel Schedulable
Schedule and unschedule eloquent models elegantly without cron jobs
Stars: ✭ 78 (-2.5%)
Mutual labels:  laravel, laravel-package
Laravel Botscout
Block malicious scripts using botscout.com protection for your laravel app
Stars: ✭ 69 (-13.75%)
Mutual labels:  laravel, laravel-package
Kickstarts
💻 No setup, just development!
Stars: ✭ 57 (-28.75%)
Mutual labels:  laravel, lumen
Backup
MySQL Database backup package for Laravel
Stars: ✭ 66 (-17.5%)
Mutual labels:  laravel, laravel-package
Dark Sky Api
PHP Library for the Dark Sky API.
Stars: ✭ 70 (-12.5%)
Mutual labels:  laravel, laravel-package
Laravel Sensitive
过滤敏感词汇的laravel包,使用DFA算法
Stars: ✭ 63 (-21.25%)
Mutual labels:  laravel-package, lumen
Laravel Opcache
Laravel Package for OPcache
Stars: ✭ 1,116 (+1295%)
Mutual labels:  laravel, laravel-package
Laravel Api Health
Monitor first and third-party services and get notified when something goes wrong!
Stars: ✭ 65 (-18.75%)
Mutual labels:  laravel, laravel-package
Laravel Health Check
A package for checking the health of your Laravel & Lumen applications
Stars: ✭ 59 (-26.25%)
Mutual labels:  laravel, lumen
Laravel Remember Uploads
Laravel Middleware and helper for remembering file uploads during validation redirects
Stars: ✭ 67 (-16.25%)
Mutual labels:  laravel, laravel-package
Laraupdater
Enable Laravel App Self-Update. Allow your Laravel Application to auto-update itself.
Stars: ✭ 75 (-6.25%)
Mutual labels:  laravel, laravel-package
Candy Hub
The backend system for your GetCandy API
Stars: ✭ 73 (-8.75%)
Mutual labels:  laravel, laravel-package
Laravel Sqs Fifo Queue
Adds a Laravel queue driver for Amazon SQS FIFO queues.
Stars: ✭ 75 (-6.25%)
Mutual labels:  laravel, lumen
Laravel Console Logger
Logging and Notifications for Laravel Console Commands.
Stars: ✭ 79 (-1.25%)
Mutual labels:  laravel, laravel-package

laravel-url-shortener

Powerful URL shortening tools in Laravel

Installation

You can easily install this package using Composer, by running the following command:

composer require laracrafts/laravel-url-shortener

Requirements

This package has the following requirements:

  • PHP 7.1 or higher
  • Laravel 5.1 or higher

Laravel 5.5+

If you use Laravel 5.5 or higher, that's it. You can now use the package, continue to the usage section.

Laravel 5.1-5.4

If you're using an older version of Laravel, register the package's service provider to your application. You can do this by adding the following line to your config/app.php file:

'providers' => [
   ...
   LaraCrafts\UrlShortener\UrlShortenerServiceProvider::class,
   ...
],

Usage

The shortener can be retrieved from the container in two ways:

$shortener = app('url.shortener');
// or...
$shortener = url()->shortener();

Once you have an instance of the shortener, you can shorten your URLs:

// This will return your shortened URL as a string
$shortener->shorten(...);

// This will return a promise which will resolve to your shortened URL
$shortener->shortenAsync(...);

// You can also call shortening from Laravel's url component directly
url()->shorten(...);

// or...
app('url')->shorten(...);

// or even...
app('url.shortener')->shorten(...);

This package relies on Guzzle's promise library for its asynchronous shortening, read their documentation for more information.

You can also use dependency injection to inject the shortener into a method:

class MyController extends Controller
{
    public function myFunction(ShortenerManager $shortener)
    {
        $shortener->shorten(...);
    }
}

The shortener exposes the following methods:

Method Description
shorten Shorten the given URL
shortenAsync Shorten the given URL asynchronously
driver Retrieve a driver (e.g. tiny_url)
extend Register your own driver

Changing the driver

You can change the default driver by setting URL_SHORTENER_DRIVER={driver} in your environment file or publishing the config file and changing it directly.

Adding your own drivers

Much like Laravel's core components, you can add your own drivers for this package. You can do this by adding the following code to a central place in your application (preferably a service provider).

public function boot(ShortenerManager $shorteners)
{
    $shorteners->extend('my_driver', function ($app, $config) {
       // Return your driver instance here
    });
}

Once you have registered your driver you can call it like any other driver.

If you wrote a custom driver that others might find useful (such as a public online shortener service), please consider adding it to the package via a pull request.

Available drivers

Below is a list of available drivers along with their individual specs:

Service Driver name Since version Analytics Monetization
Bit.ly bit_ly 0.1.0 yes no
Firebase Dynamic Links firebase 0.2.0 yes no
Is.gd is_gd 0.2.0 yes no
Ouo.io ouo_io 0.2.0 yes yes
Polr polr 0.3.0 yes no
Shorte.st shorte_st 0.1.0 yes yes
TinyURL tiny_url 0.1.0 no no
V.gd is_gd 0.2.0 yes no

Bit.ly

website

This driver runs on Bit.ly's API and currently only supports API version 4. The API requires an access token and currently only generic access tokens are supported. You can retrieve such tokens from your Bit.ly profile. If you have a paid Bit.ly account you will also be able to set the domain for your shortened URLs.

Variable Description
URL_SHORTENER_API_TOKEN Your Bit.ly API token
URL_SHORTENER_PREFIX Your short URL domain

Firebase Dynamic Links

website

This driver runs on Firebase's API. The API requires an access token, a URI prefix and a suffix. You can access these information on you firebase console. The token accessible under the project settings as "Web API Key" and the prefixes can be defined and accessed under the Dynamic Links menu.

The suffix can have the value SHORT or UNGUESSABLE.

IMPORTANT! Links created via the API are not visible in the Firebase console. They are only accessible via the Analytics REST API.

Variable Description Default
URL_SHORTENER_API_TOKEN Your Firebase API token
URL_SHORTENER_PREFIX Your URL prefix
URL_SHORTENER_STRATEGY The path component creation method UNGUESSABLE

Is.gd / V.gd

website

This driver supports is.gd and v.gd trough their respective APIs. When link previews are enabled v.gd will be used, otherwise is.gd will be used.

Variable Description
URL_SHORTENER_ANALYTICS Enable or disable statistics

Ouo.io

website

This driver uses the Ouo.io API and requires an access token. The API allows for URL monetization via advertisements and provides analytics via its dashboard.

Variable Description
URL_SHORTENER_API_TOKEN Your Ouo.io API token

Polr

website

This driver uses the Polr API. The API requires an access token and a URI prefix.

Variable Description
URL_SHORTENER_API_TOKEN Your Polr API token
URL_SHORTENER_PREFIX Your URL prefix

Shorte.st

website

This driver uses the Shorte.st API, which requires an access token. This API supports monetization of your URLs and can give you insight into your traffic via its dashboard.

Variable Description
URL_SHORTENER_API_TOKEN Your Shorte.st API token

TinyURL

website

This driver runs on the TinyURL API, which requires no additional setup. This driver is the package default.

Changelog

Please see CHANGELOG for more information what has been changed in recent versions.

Security

If you discover any security related issues, please email one of the authors instead of using the issue tracker. You can find the author emails in the composer.json.

Contributing

Please see CONTRIBUTING for details.

Credits

License

The MIT License (MIT). Please see License File for more information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].