Package Data | |
---|---|
Maintainer Username: | cyrill.kalita@gmail.com |
Package Create Date: | 2020-10-10 |
Package Last Update: | 2020-10-10 |
Home Page: | |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-11-09 15:08:15 |
Package Statistics | |
---|---|
Total Downloads: | 4,308 |
Monthly Downloads: | 52 |
Daily Downloads: | 2 |
Total Stars: | 0 |
Total Watchers: | 2 |
Total Forks: | 2 |
Total Open Issues: | 0 |
Powerful URL shortening tools for your Laravel
You can easily install this package using Composer, by running the following command:
composer require binary-cats/laravel-url-shortener
This package has the following requirements:
If you use Laravel 8 you must have PHP 7.3 or higher (which is a root laravel requirment)
If you use Laravel 5.5 or higher, that's it. You can now use the package, continue to the usage section.
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' => [
...
BinaryCats\UrlShortener\UrlShortenerServiceProvider::class,
...
],
If you want to change the default configuration, you can publish it with:
php artisan vendor:publish --provider=BinaryCats\\UrlShortener\\UrlShortenerServiceProvider
The package will expose the following config file:
return [
'default' => env('URL_SHORTENER_DRIVER', 'tiny_url'),
'shorteners' => [
'bit_ly' => [
'driver' => 'bit_ly',
'domain' => env('URL_SHORTENER_PREFIX', 'bit.ly'),
'token' => env('URL_SHORTENER_API_TOKEN'),
],
'firebase' => [
'driver' => 'firebase',
'prefix' => env('URL_SHORTENER_PREFIX'),
'token' => env('URL_SHORTENER_API_TOKEN'),
'suffix' => env('URL_SHORTENER_STRATEGY', 'UNGUESSABLE'),
],
'is_gd' => [
'driver' => 'is_gd',
'base_uri' => 'https://is.gd',
'statistics' => env('URL_SHORTENER_ANALYTICS', false),
],
'ouo_io' => [
'driver' => 'ouo_io',
'token' => env('URL_SHORTENER_API_TOKEN'),
],
'polr' => [
'driver' => 'polr',
'prefix' => env('URL_SHORTENER_PREFIX'),
'token' => env('URL_SHORTENER_API_TOKEN'),
],
'shorte_st' => [
'driver' => 'shorte_st',
'token' => env('URL_SHORTENER_API_TOKEN'),
],
'tiny_url' => [
'driver' => 'tiny_url',
],
'v_gd' => [
'driver' => 'is_gd',
'base_uri' => 'https://v.gd',
'statistics' => env('URL_SHORTENER_ANALYTICS', false),
],
],
];
Below is the full list of .env
values to configure:
#-------------------------
# Services: Url Shortener
#
#-------------------------
URL_SHORTENER_DRIVER=tiny_url
URL_SHORTENER_PREFIX=
URL_SHORTENER_API_TOKEN=
URL_SHORTENER_STRATEGY=
URL_SHORTENER_ANALYTICS=
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
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.
Much like all of Laravel, you can add your own drivers for this package.
You can do this by adding the following code to boot
method of your AppServiceProvider
.
use BinaryCats\UrlShortener\UrlShortenerManager;
public function boot(UrlShortenerManager $shorteners)
{
$shorteners->extend('local', function ($app, $config) {
return new LocalUrlShortener($app, $config);
});
}
Once you have registered your driver you can call it just 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.
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
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
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
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
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
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
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
This driver runs on the TinyURL API, which requires no additional setup. This driver is the package default.
Please see CHANGELOG for more information what has been changed in recent versions.
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.
Please see CONTRIBUTING for details.
This is a port from the original LaraCraft's Url Shortener.
The MIT License (MIT). Please see License File for more information.