Skip to content

Commit

Permalink
Merge pull request #26 from joaorobertopb/feature-3
Browse files Browse the repository at this point in the history
Adding feature to skip routes
  • Loading branch information
renatomarinho authored Oct 16, 2017
2 parents 8be3405 + fac1c04 commit 36518df
Show file tree
Hide file tree
Showing 6 changed files with 151 additions and 28 deletions.
20 changes: 20 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,10 @@ protected $middleware = [

## Configuration

After installing package, you may need to configure some options.

### Disable Service

You would probably like to set up the local environment to get a readable output.

```php
Expand All @@ -281,6 +285,22 @@ You would probably like to set up the local environment to get a readable output
//Set this field to false to disable the laravel page speed service.
'enable' => env('LARAVEL_PAGE_SPEED_ENABLE', true),
```
### Skip routes

You would probably like to configure the package to skip some routes.

```php
//config/laravel-page-speed.php

//You can use * as wildcard.
'skip' => [
'*.pdf', //Ignore all routes with final .pdf
'*/downloads/*',//Ignore all routes that contain 'downloads'
];
```

By default this field comes configured with some options, so feel free to configure according to your needs...


## Testing

Expand Down
48 changes: 47 additions & 1 deletion config/laravel-page-speed.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,51 @@
| You would probably replace that in your local configuration to get a readable output.
|
*/
'enable' => env('LARAVEL_PAGE_SPEED_ENABLE',true),
'enable' => env('LARAVEL_PAGE_SPEED_ENABLE', true),

/*
|--------------------------------------------------------------------------
| Skip Routes
|--------------------------------------------------------------------------
|
| Skip Routes paths to exclude.
| You can use * as wildcard.
|
*/

'skip' => [
'*.xml',
'*.less',
'*.pdf',
'*.doc',
'*.txt',
'*.ico',
'*.rss',
'*.zip',
'*.mp3',
'*.rar',
'*.exe',
'*.wmv',
'*.doc',
'*.avi',
'*.ppt',
'*.mpg',
'*.mpeg',
'*.tif',
'*.wav',
'*.mov',
'*.psd',
'*.ai',
'*.xls',
'*.mp4',
'*.m4a',
'*.swf',
'*.dat',
'*.dmg',
'*.iso',
'*.flv',
'*.m4v',
'*.torrent'
],

];
36 changes: 35 additions & 1 deletion src/Middleware/PageSpeed.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use Closure;
use Config;
use Illuminate\Support\Str;

abstract class PageSpeed
{
Expand All @@ -26,7 +27,7 @@ public function handle($request, Closure $next)
{
$response = $next($request);

if (! Config::get('laravel-page-speed.enable')) {
if (! $this->shouldProcessPageSpeed($request)) {
return $response;
}

Expand All @@ -47,4 +48,37 @@ protected function replace(array $replace, $buffer)
{
return preg_replace(array_keys($replace), array_values($replace), $buffer);
}

/**
* Check Laravel Page Speed is enabled or not
*
* @return bool
*/
public function isEnable()
{
return Config::get('laravel-page-speed.enable');
}

/**
* Should Process
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
protected function shouldProcessPageSpeed($request)
{
if (! $this->isEnable()) {
return false;
}

$patterns = Config::get('laravel-page-speed.skip');

foreach ($patterns as $pattern) {
if ($request->is($pattern)) {
return false;
}
}

return true;
}
}
48 changes: 48 additions & 0 deletions tests/Config/ConfigTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<?php

namespace RenatoMarinho\LaravelPageSpeed\Test\Config;

use Illuminate\Http\Request;
use RenatoMarinho\LaravelPageSpeed\Middleware\TrimUrls;
use RenatoMarinho\LaravelPageSpeed\Test\TestCase;

class ConfigTest extends TestCase
{
protected function getMiddleware()
{
$this->middleware = new TrimUrls();
}

public function testDisableFlag()
{
$this->app['config']->set('laravel-page-speed.enable', false);

$response = $this->middleware->handle($this->request, $this->getNext());

$this->assertContains("https://", $response->getContent());
$this->assertContains("http://", $response->getContent());
$this->assertContains("https://code.jquery.com/jquery-3.2.1.min.js", $response->getContent());
}

public function testSkipRoute()
{
$this->app['config']->set('laravel-page-speed.skip', ['*/downloads/*']);

$request = Request::create('https://foo/bar/downloads/100', 'GET');

$response = $this->middleware->handle($request, $this->getNext($request));

$this->assertEquals($this->html, $response->getContent());
}

public function testSkipRouteWithFileExtension()
{
$this->app['config']->set('laravel-page-speed.skip', ['*.pdf']);

$request = Request::create('https://foo/bar/test.pdf', 'GET');

$response = $this->middleware->handle($request, $this->getNext($request));

$this->assertEquals($this->html, $response->getContent());
}
}
26 changes: 0 additions & 26 deletions tests/Middleware/TrimUrlsWithDisableFlagTest.php

This file was deleted.

1 change: 1 addition & 0 deletions tests/TestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,6 @@ protected function getNext()
protected function getEnvironmentSetUp($app)
{
$app['config']->set('laravel-page-speed.enable', true);
$app['config']->set('laravel-page-speed.skip', []);
}
}

0 comments on commit 36518df

Please sign in to comment.