forked from xtwoend/rejigger-laravel
/
routes.php
36 lines (29 loc) · 1.16 KB
/
routes.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
Route::get('(:bundle)/rejigger.js', array('as' => 'rejigger_js', function()
{
return View::make('rejigger::js');
}));
Route::get('(:bundle)/version', array('as' => 'rejigger_version', function()
{
// Don't let the controller mistake this for a regular AJAX call
unset($_SERVER['HTTP_X_REQUESTED_WITH']);
$uri = \Rejigger\URI::resolve(Input::get('uri'));
$route = \Laravel\Routing\Router::route('GET', $uri);
$response = $route->call();
$version = md5($response->content);
// Parse out resources (css & script)
preg_match_all('/\<script[^\>]+src=\"(?P<src>[^\"]+)\"[^\>]*\>/i', $response->content, $scripts);
preg_match_all('/\<link[^\>]+href=\"(?P<href>[^\"]+)\"[^\>]*\>/i', $response->content, $styles);
preg_match_all('/\<img[^\>]+src=\"(?P<src>[^\"]+)\"[^\>]*\>/i', $response->content, $images);
$resources = array_merge($scripts['src'], $styles['href'], $images['src']);
$public = path('public');
foreach ($resources as $resource)
{
$resource = $public . str_replace(\Laravel\URL::base(), '', $resource);
if (\Laravel\File::exists($resource))
{
$version .= File::modified($resource);
}
}
return '{ "version": "' . md5($version) . '" }';
}));