22
AugA Laravel URL Shortener package that provides URL redirects with optionally protected URL passwords, URL expirations, open limits before expiration, the ability to set feature activation dates, and click tracking out of the box for your Laravel applications.
You can install this package via composer:
composer require yorcreative/laravel-urlshortener
Publish the package assets.
php artisan vendor:publish --provider="YorCreative\UrlShortener\UrlShortenerServiceProvider"
Run migrations.
php artisan migrate
Building Short URLs
/**
* Basic
*/
$url = UrlService::shorten('something-extremely-long.com/even/longer?ref=with&some=thingelselonger')
->build();
// http(s)://host/prefix/identifier;
/**
* Advanced
*/
$url = UrlService::shorten('something-extremely-long.com/even/longer?ref=with&some=thingelselonger')
->withActivation(Carbon::now()->addHour()->timestamp)
->withExpiration(Carbon::now()->addDay()->timestamp)
->withOpenLimit(2)
->withOwnership(Model::find(1))
->withPassword('password')
->build();
// http(s)://host/prefix/identifier;
Finding Existing Short URLs
/**
* Find a Short URL by its identifier
*/
$shortUrl = UrlService::findByIdentifier('identifier');
/**
* Find a Short URL by its hashed signature
*/
$shortUrl = UrlService::findByHash(md5('long_url'));
/**
* Find a Short URL by its plain text long url string
*/
$shortUrl = UrlService::findByPlainText('long_url');
/**
* Will return an instance of Models/ShortUrl or throw UrlRepository('Unable to locate Short URL')
*/
Getting Click Information and Filtering on Ownership
$clicks = ClickService::get([
'ownership' => [
Model::find(1),
Model::find(2)
]
]);
Filter on Outcome
$clicks = ClickService::get([
'outcome' => [
1, // successful_routed
2, // successful_protected
3, // failure_password
4, // failure_expiration
5 // failure_limit
]
]);
Filter on the Click’s YorShortUrl Status
$clicks = ClickService::get([
'status' => [
'active',
'expired',
'expiring' // within 30 minutes of expiring
]
]);
Filtered on YorShortUrl Identifier(s)
$clicks = ClickService::get([
'identifier' => [
'xyz',
'yxz'
]
]);
Iterate Through Results With Batches
$clicks = ClickService::get([
'limit' => 500
'offset' => 1500
]);
$clicks->get('results');
$clicks->get('total');
Putting it all Together
/**
* Get the successfully routed clicks for all active short urls that are owned by Model IDs 1,2,3 and 4.
* Set the offset of results by 1500 clicks and limit by the results by 500.
*/
$clicks = ClickService::get([
'ownership' => Model::whereIn('id', [1,2,3,4])->get()->toArray(),
'outcome' => [
3 // successful_routed
],
'status' => [
'active'
],
'limit' => 500
'offset' => 1500
]);
For more details, Visit Github.
Published at : 22-08-2022
I am a highly results-driven professional with 12+ years of collective experience in the grounds of web application development especially in laravel, native android application development in java, and desktop application development in the dot net framework. Now managing a team of expert developers at Codebrisk.
Launch project