Skip to content

Commit bf7bf20

Browse files
author
Illia Sakovich
committed
wip
1 parent 68923cb commit bf7bf20

26 files changed

+131
-122
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
# Laravel Dynamic Renderer
1+
# Laravel Dynamic Rendering
22

33
## Installation
44

55
You can install this package via composer using this command:
66

77
```bash
8-
composer require coderello/laravel-dynamic-renderer
8+
composer require coderello/laravel-dynamic-rendering
99
```
1010

1111
The package will automatically register itself.

composer.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
"name": "coderello/laravel-dynamic-renderer",
3-
"description": "Dynamic renderer for your Laravel application.",
2+
"name": "coderello/laravel-dynamic-rendering",
3+
"description": "Dynamic rendering for your Laravel application.",
44
"type": "library",
55
"license": "MIT",
66
"require": {
@@ -14,12 +14,12 @@
1414
},
1515
"autoload": {
1616
"psr-4": {
17-
"Coderello\\DynamicRenderer\\": "src/"
17+
"Coderello\\DynamicRendering\\": "src/"
1818
}
1919
},
2020
"autoload-dev": {
2121
"psr-4": {
22-
"Coderello\\DynamicRenderer\\Tests\\": "tests/"
22+
"Coderello\\DynamicRendering\\Tests\\": "tests/"
2323
}
2424
},
2525
"scripts": {
@@ -28,7 +28,7 @@
2828
"extra": {
2929
"laravel": {
3030
"providers": [
31-
"Coderello\\DynamicRenderer\\Providers\\DynamicRendererServiceProvider"
31+
"Coderello\\DynamicRendering\\Providers\\DynamicRenderingServiceProvider"
3232
]
3333
}
3434
}

config/dynamic-renderer.php

-25
This file was deleted.

config/dynamic-rendering.php

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?php
2+
3+
return [
4+
5+
/*
6+
* Enable or disable the dynamic rendering.
7+
*/
8+
'enabled' => env('DYNAMIC_RENDERING_ENABLED', true),
9+
10+
/*
11+
* The driver which is used to render the pages dynamically.
12+
*
13+
* Available drivers: "prerender", "rendertron".
14+
*/
15+
'default' => env('DYNAMIC_RENDERER', 'prerender'),
16+
17+
/*
18+
* The list of rendering criteria which should be met to render
19+
* the page dynamically.
20+
*/
21+
'rendering_criteria' => [
22+
\Coderello\DynamicRendering\RenderingCriteria\IsEnabled::class,
23+
// \Coderello\DynamicRendering\RenderingCriteria\IsProduction::class,
24+
\Coderello\DynamicRendering\RenderingCriteria\IsNotRenderer::class,
25+
\Coderello\DynamicRendering\RenderingCriteria\IsCrawler::class,
26+
\Coderello\DynamicRendering\RenderingCriteria\IsNotStaticFilePath::class,
27+
],
28+
29+
/**
30+
* The list of renderers and their configurations.
31+
*/
32+
'renderers' => [
33+
34+
'prerender' => [
35+
'url' => env('PRERENDER_URL', 'http://localhost:3000'),
36+
],
37+
38+
'rendertron' => [
39+
'url' => env('RENDERTRON_URL', 'http://localhost:3000'),
40+
],
41+
42+
],
43+
44+
];

docs/installation.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ featherIcon: download
1010
You can install this package via composer using this command:
1111

1212
```bash
13-
composer require coderello/laravel-dynamic-renderer
13+
composer require coderello/laravel-dynamic-rendering
1414
```
1515

16-
To publish the config file to `config/dynamic-renderer.php` run:
16+
To publish the config file to `config/dynamic-rendering.php` run:
1717

1818
```bash
19-
php artisan vendor:publish --tag="dynamic-renderer-config"
19+
php artisan vendor:publish --tag="dynamic-rendering-config"
2020
```
2121

2222
## Choosing the renderer

docs/introduction.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ weight: 200
55
featherIcon: info
66
---
77

8-
**Laravel Dynamic Renderer** totally solves the SEO issue for SPA (single page applications).
8+
**Laravel Dynamic Rendering** totally solves the SEO issue for SPA (single page applications).
99

1010
Under the hood, if the request was made by the search bot, the requested page of your SPA is being converted into the plain HTML using the renderer and returned to the robot.
1111

docs/prerender.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ The default port is `3000`. Change the server port with `export PORT=3005` if ne
2424
All you have to do on the application side is to put these variables into the `.env` file.
2525

2626
```
27-
DYNAMIC_RENDERER_DRIVER=prerender
27+
DYNAMIC_RENDERER=prerender
2828
PRERENDER_URL=http://localhost:3000
2929
```

docs/rendertron.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ The default port is `3000`.
2424
All you have to do on the application side is to put these variables into the `.env` file.
2525

2626
```
27-
DYNAMIC_RENDERER_DRIVER=rendertron
27+
DYNAMIC_RENDERER=rendertron
2828
RENDERTRON_URL=http://localhost:3000
2929
```

phpunit.xml.dist

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
processIsolation="false"
1111
stopOnFailure="false">
1212
<testsuites>
13-
<testsuite name="Dynamic Renderer Test Suite">
13+
<testsuite name="Dynamic Rendering Test Suite">
1414
<directory>tests</directory>
1515
</testsuite>
1616
</testsuites>

src/Facades/DynamicRenderer.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
<?php
22

3-
namespace Coderello\DynamicRenderer\Facades;
3+
namespace Coderello\DynamicRendering\Facades;
44

5-
use Coderello\DynamicRenderer\Managers\DynamicRendererManager;
6-
use Coderello\DynamicRenderer\Support\RenderingResult;
5+
use Coderello\DynamicRendering\Managers\DynamicRenderingManager;
6+
use Coderello\DynamicRendering\Support\RenderingResult;
77
use Illuminate\Http\Request;
88
use Illuminate\Support\Facades\Facade;
99

1010
/**
1111
* @method static RenderingResult render(string $url)
1212
* @method static bool isRendering(Request $request)
1313
*
14-
* @see DynamicRendererManager
14+
* @see DynamicRenderingManager
1515
*/
1616
class DynamicRenderer extends Facade
1717
{
+23-32
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,20 @@
11
<?php
22

3-
namespace Coderello\DynamicRenderer\Managers;
3+
namespace Coderello\DynamicRendering\Managers;
44

5-
use Coderello\DynamicRenderer\Renderers\PrerenderRenderer;
6-
use Coderello\DynamicRenderer\Renderers\Renderer;
7-
use Coderello\DynamicRenderer\Renderers\RendertronRenderer;
8-
use Coderello\DynamicRenderer\Support\RenderingResult;
5+
use Coderello\DynamicRendering\Renderers\PrerenderDynamicRenderer;
6+
use Coderello\DynamicRendering\Renderers\DynamicRenderer;
7+
use Coderello\DynamicRendering\Renderers\RendertronDynamicRenderer;
8+
use Coderello\DynamicRendering\Support\RenderingResult;
99
use Illuminate\Http\Request;
1010
use Illuminate\Support\Facades\Config;
1111
use Illuminate\Support\Manager;
1212

13-
class DynamicRendererManager extends Manager implements Renderer
13+
class DynamicRendererManager extends Manager implements DynamicRenderer
1414
{
15-
/**
16-
* Get the default driver name.
17-
*
18-
* @return string
19-
*/
2015
public function getDefaultDriver(): string
2116
{
22-
return $this->getConfigValue('dynamic-renderer.driver');
17+
return $this->getConfigValue('dynamic-rendering.default');
2318
}
2419

2520
private function getConfigValue(string $key, $default = null)
@@ -28,41 +23,37 @@ private function getConfigValue(string $key, $default = null)
2823
return Config::get($key, $default);
2924
}
3025

31-
public function createPrerenderDriver(): PrerenderRenderer
26+
private function getRendererConfig(string $renderer): array
3227
{
33-
return new PrerenderRenderer(
34-
$this->getConfigValue('dynamic-renderer.prerender', [])
35-
);
28+
return $this->getConfigValue('dynamic-rendering.renderers.'.$renderer, []);
3629
}
3730

38-
public function createRendertronDriver(): RendertronRenderer
31+
public function createPrerenderDriver(): PrerenderDynamicRenderer
3932
{
40-
return new RendertronRenderer(
41-
$this->getConfigValue('dynamic-renderer.rendertron', [])
33+
return new PrerenderDynamicRenderer(
34+
$this->getRendererConfig('prerender')
4235
);
4336
}
4437

45-
public function render(string $url): RenderingResult
38+
public function createRendertronDriver(): RendertronDynamicRenderer
4639
{
47-
/** @var Renderer $driver */
48-
$driver = $this->driver();
49-
50-
return $driver->render($url);
40+
return new RendertronDynamicRenderer(
41+
$this->getRendererConfig('rendertron')
42+
);
5143
}
5244

53-
public function getUserAgentPatterns(): array
45+
public function render(string $url): RenderingResult
5446
{
55-
/** @var Renderer $driver */
56-
$driver = $this->driver();
57-
58-
return $driver->getUserAgentPatterns();
47+
return $this->driver()->render($url);
5948
}
6049

6150
public function isRendering(Request $request): bool
6251
{
63-
/** @var Renderer $driver */
64-
$driver = $this->driver();
52+
return $this->driver()->isRendering($request);
53+
}
6554

66-
return $driver->isRendering($request);
55+
public function driver($driver = null): DynamicRenderer
56+
{
57+
return parent::driver($driver);
6758
}
6859
}

src/Middleware/DynamicRendererMiddleware.php src/Middleware/DynamicRenderingMiddleware.php

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
<?php
22

3-
namespace Coderello\DynamicRenderer\Middleware;
3+
namespace Coderello\DynamicRendering\Middleware;
44

55
use Closure;
6-
use Coderello\DynamicRenderer\Facades\DynamicRenderer;
7-
use Coderello\DynamicRenderer\Renderers\Renderer;
8-
use Coderello\DynamicRenderer\Support\RenderingCriteriaChecker;
6+
use Coderello\DynamicRendering\Facades\DynamicRenderer;
7+
use Coderello\DynamicRendering\Renderers\DynamicRenderer;
8+
use Coderello\DynamicRendering\Support\RenderingCriteriaChecker;
99
use Illuminate\Contracts\Container\Container;
1010
use Illuminate\Http\Request;
1111
use Illuminate\Http\Response;
1212

13-
class DynamicRendererMiddleware
13+
class DynamicRenderingMiddleware
1414
{
1515
public function handle(Request $request, Closure $next)
1616
{

src/Providers/DynamicRendererServiceProvider.php src/Providers/DynamicRenderingServiceProvider.php

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
<?php
22

3-
namespace Coderello\DynamicRenderer\Providers;
3+
namespace Coderello\DynamicRendering\Providers;
44

5-
use Coderello\DynamicRenderer\Managers\DynamicRendererManager;
6-
use Coderello\DynamicRenderer\Middleware\DynamicRendererMiddleware;
7-
use Coderello\DynamicRenderer\Renderers\Renderer;
5+
use Coderello\DynamicRendering\Managers\DynamicRendererManager;
6+
use Coderello\DynamicRendering\Middleware\DynamicRenderingMiddleware;
7+
use Coderello\DynamicRendering\Renderers\DynamicRenderer;
88
use Illuminate\Contracts\Http\Kernel;
99
use Illuminate\Support\ServiceProvider;
1010

11-
class DynamicRendererServiceProvider extends ServiceProvider
11+
class DynamicRenderingServiceProvider extends ServiceProvider
1212
{
1313
/**
1414
* Bootstrap shared data service.
@@ -37,15 +37,15 @@ public function register()
3737
protected function registerPublishing()
3838
{
3939
$this->publishes([
40-
__DIR__ . '/../../config/dynamic-renderer.php' => config_path('dynamic-renderer.php'),
41-
], 'dynamic-renderer-config');
40+
__DIR__ . '/../../config/dynamic-rendering.php' => config_path('dynamic-rendering.php'),
41+
], 'dynamic-rendering-config');
4242
}
4343

4444
protected function registerConfig()
4545
{
4646
$this->mergeConfigFrom(
47-
__DIR__ . '/../../config/dynamic-renderer.php',
48-
'dynamic-renderer'
47+
__DIR__ . '/../../config/dynamic-rendering.php',
48+
'dynamic-rendering'
4949
);
5050
}
5151

@@ -61,6 +61,6 @@ protected function registerMiddleware()
6161
/** @var Kernel $kernel */
6262
$kernel = $this->app[Kernel::class];
6363

64-
$kernel->pushMiddleware(DynamicRendererMiddleware::class);
64+
$kernel->pushMiddleware(DynamicRenderingMiddleware::class);
6565
}
6666
}

src/Renderers/Renderer.php src/Renderers/DynamicRenderer.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<?php
22

3-
namespace Coderello\DynamicRenderer\Renderers;
3+
namespace Coderello\DynamicRendering\Renderers;
44

5-
use Coderello\DynamicRenderer\Support\RenderingResult;
5+
use Coderello\DynamicRendering\Support\RenderingResult;
66
use Illuminate\Http\Request;
77

8-
interface Renderer
8+
interface DynamicRenderer
99
{
1010
public function render(string $url): RenderingResult;
1111

src/Renderers/PrerenderRenderer.php src/Renderers/PrerenderDynamicRenderer.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
<?php
22

3-
namespace Coderello\DynamicRenderer\Renderers;
3+
namespace Coderello\DynamicRendering\Renderers;
44

5-
use Coderello\DynamicRenderer\Support\RenderingResult;
5+
use Coderello\DynamicRendering\Support\RenderingResult;
66
use GuzzleHttp\Client;
77
use GuzzleHttp\RequestOptions;
88
use Illuminate\Http\Request;
99
use Illuminate\Support\Str;
1010

11-
class PrerenderRenderer implements Renderer
11+
class PrerenderDynamicRenderer implements DynamicRenderer
1212
{
1313
/**
1414
* @var string|null
@@ -35,6 +35,6 @@ public function render(string $url): RenderingResult
3535

3636
public function isRendering(Request $request): bool
3737
{
38-
return Str::is('*Prerender*', $request->userAgent());
38+
return Str::contains($request->userAgent(), 'Prerender');
3939
}
4040
}

0 commit comments

Comments
 (0)