From 2389d66da849798f8d4ec5f10e3b07c11da49185 Mon Sep 17 00:00:00 2001 From: Michael Francis Date: Sat, 28 May 2011 13:28:16 -0400 Subject: Initial Commit --- config/bootstrap/media.php | 63 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 config/bootstrap/media.php (limited to 'config/bootstrap/media.php') diff --git a/config/bootstrap/media.php b/config/bootstrap/media.php new file mode 100644 index 0000000..66e002d --- /dev/null +++ b/config/bootstrap/media.php @@ -0,0 +1,63 @@ +to('json'); + * }}} + */ +use lithium\util\Collection; + +Collection::formats('lithium\net\http\Media'); + +/** + * This filter is a convenience method which allows you to automatically route requests for static + * assets stored within active plugins. For example, given a JavaScript file `bar.js` inside the + * `li3_foo` plugin installed in an application, requests to `http://app/path/li3_foo/js/bar.js` + * will be routed to `/path/to/app/libraries/plugins/li3_foo/webroot/js/bar.js` on the filesystem. + * In production, it is recommended that you disable this filter in favor of symlinking each + * plugin's `webroot` directory into your main application's `webroot` directory, or adding routing + * rules in your web server's configuration. + */ +use lithium\action\Dispatcher; +use lithium\action\Response; +use lithium\net\http\Media; + +Dispatcher::applyFilter('_callable', function($self, $params, $chain) { + list($library, $asset) = explode('/', $params['request']->url, 2) + array("", ""); + + if ($asset && ($path = Media::webroot($library)) && file_exists($file = "{$path}/{$asset}")) { + return function() use ($file) { + $info = pathinfo($file); + $media = Media::type($info['extension']); + $content = (array) $media['content']; + + return new Response(array( + 'headers' => array('Content-type' => reset($content)), + 'body' => file_get_contents($file) + )); + }; + } + return $chain->next($self, $params, $chain); +}); + +Media::type('jpg', 'image/jpeg', array('cast' => false, 'encode' => function($data) { + return $data['photo']->file->getBytes(); + })); + +?> \ No newline at end of file -- cgit v1.2.3