Website ๐ contributte.org | Contact ๐จ๐ปโ๐ป f3l1x.io | Twitter ๐ฆ @contributte
This project is no longer being maintained. Please use contributte/application. |
---|
Composer | minetro/fly-response |
---|---|
Version | |
PHP | |
License |
For common purpose and your custom solutions.
Special response for handling files on-the-fly.
Execute command over popen.
use Minetro\FlyResponse\Adapter\ProcessAdapter;
use Minetro\FlyResponse\FlyFileResponse;
// Compress current folder and send to response
$adapter = new ProcessAdapter('tar cf - ./ | gzip -c -f');
$response = new FlyFileResponse($adapter, 'folder.tgz');
$this->sendResponse($response);
Write to php://output
.
use Minetro\FlyResponse\Adapter\StdoutAdapter;
use Minetro\FlyResponse\Buffer\Buffer;
use Minetro\FlyResponse\FlyFileResponse;
use Nette\Http\IRequest;
use Nette\Http\IResponse;
// Write to stdout over buffer class
$adapter = new StdoutAdapter(function(Buffer $buffer, IRequest $request, IResponse $response) {
// Modify headers
$response->setHeader(..);
// Write data
$buffer->write('Some data..');
});
$response = new FlyFileResponse($adapter, 'my.data');
$this->sendResponse($response);
use Minetro\FlyResponse\Adapter\CallbackAdapter;
use Minetro\FlyResponse\Buffer\Buffer;
use Minetro\FlyResponse\FlyFileResponse;
use Nette\Http\IRequest;
use Nette\Http\IResponse;
$adapter = new CallbackAdapter(function(IRequest $request, IResponse $response) use ($model) {
// Modify headers
$response->setHeader($header);
// Fetch topsecret data
$data = $this->facade->getData();
foreach ($data as $d) {
// Write or print data..
}
});
$response = new FlyFileResponse($adapter, 'my.data');
$this->sendResponse($response);
final class BigOperationHandler
{
/** @var Facade */
private $facade;
/**
* @param Facade $facade
*/
public function __construct(Facade $facade)
{
$this->facade = $facade;
}
public function toFlyResponse()
{
$adapter = new CallbackAdapter(function (IRequest $request, IResponse $response) {
// Modify headers
$response->setHeader(..);
// Fetch topsecret data
$data = $this->facade->getData();
foreach ($data as $d) {
// Write or print data..
}
});
return new FlyFileResponse($adapter, 'file.ext');
// or
return new FlyResponse($adapter);
}
}
interface IBigOperationHandlerFactory
{
/**
* @return BigOperationHandler
*/
public function create();
}
final class MyPresenter extends Nette\Application\UI\Presenter
{
/** @var IBigOperationHandlerFactory @inject */
public $bigOperationHandlerFactory;
public function handleMagic()
{
$this->sendResponse(
$this->bigOperationHandlerFactory->create()->toFlyResponse()
);
}
}
This package was maintain by these authors.
Consider to support contributte development team. Also thank you for being used this package.