Make *Processor::handleRequest returns a Response

This commit is contained in:
Dmitriy Simushev 2014-08-27 13:44:01 +00:00
parent 928328f2b0
commit 4ba7804b88
4 changed files with 30 additions and 31 deletions

View File

@ -37,12 +37,7 @@ class ThreadController extends AbstractController
public function updateAction(Request $request) public function updateAction(Request $request)
{ {
$processor = ThreadProcessor::getInstance(); $processor = ThreadProcessor::getInstance();
// TODO: Remove bufferization after *Processor classes will be rewritten
// to play nice with symfony request/response objects
ob_start();
$processor->handleRequest($request);
$content = ob_get_clean();
return $content; return $processor->handleRequest($request);
} }
} }

View File

@ -91,12 +91,6 @@ class UsersController extends AbstractController
$processor = UsersProcessor::getInstance(); $processor = UsersProcessor::getInstance();
$processor->setAuthenticationManager($this->getAuthenticationManager()); $processor->setAuthenticationManager($this->getAuthenticationManager());
// TODO: Remove bufferization after *Processor classes will be rewritten return $processor->handleRequest($request);
// to play nice with symfony request/response objects
ob_start();
$processor->handleRequest($request);
$content = ob_get_clean();
return $content;
} }
} }

View File

@ -24,6 +24,7 @@ use Mibew\Database;
use Mibew\EventDispatcher; use Mibew\EventDispatcher;
use Mibew\RequestProcessor\Exception\AbstractProcessorException; use Mibew\RequestProcessor\Exception\AbstractProcessorException;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
/** /**
* Implements abstract class for request processing * Implements abstract class for request processing
@ -155,8 +156,8 @@ abstract class AbstractProcessor
* listener to the "<eventPrefix>RequestError" event. * listener to the "<eventPrefix>RequestError" event.
* *
* @param Request $request The request to handle. * @param Request $request The request to handle.
* @return boolean true if request processed succussfully or false on * @return Response|boolean A response object if request processed
* failure * succussfully or boolean false on failure
*/ */
public function handleRequest($request) public function handleRequest($request)
{ {
@ -229,9 +230,9 @@ abstract class AbstractProcessor
if (count($this->responses) != 0) { if (count($this->responses) != 0) {
// Send responses // Send responses
if ($request_package['async']) { if ($request_package['async']) {
$this->sendAsyncResponses($this->responses); return $this->buildAsyncResponses($this->responses);
} else { } else {
$this->sendSyncResponses($this->responses); return $this->buildSyncResponses($this->responses);
} }
} }
@ -244,7 +245,8 @@ abstract class AbstractProcessor
return false; return false;
} }
return true; // Return an empty response
return new Response();
} }
/** /**
@ -542,7 +544,7 @@ abstract class AbstractProcessor
*/ */
protected function sendSyncRequest($request) protected function sendSyncRequest($request)
{ {
trigger_error('Method sendSyncRequest does not implement!', E_USER_WARNING); trigger_error('Method sendSyncRequest is not implemented!', E_USER_WARNING);
} }
/** /**
@ -553,29 +555,31 @@ abstract class AbstractProcessor
*/ */
protected function sendAsyncRequest($request) protected function sendAsyncRequest($request)
{ {
trigger_error('Method sendAsyncRequest does not implement!', E_USER_WARNING); trigger_error('Method sendAsyncRequest is not implemented!', E_USER_WARNING);
} }
/** /**
* Sends synchronous responses * Builds synchronous responses
* *
* @param array $responses An array of the 'Request' arrays. See Mibew API * @param array $responses An array of the 'Request' arrays. See Mibew API
* for details * for details
* @return Response A response object that is ready for sending to client.
*/ */
protected function sendSyncResponses($responses) protected function buildSyncResponses($responses)
{ {
trigger_error('Method sendSyncResponses does not implement!', E_USER_WARNING); trigger_error('Method buildSyncResponses is not implemented!', E_USER_WARNING);
} }
/** /**
* Sends asynchronous responses * Builds asynchronous responses
* *
* @param array $responses An array of the 'Request' arrays. See Mibew API * @param array $responses An array of the 'Request' arrays. See Mibew API
* for details * for details
* @return Response A response object that is ready for sending to client.
*/ */
protected function sendAsyncResponses($responses) protected function buildAsyncResponses($responses)
{ {
trigger_error('Method sendAsyncResponses does not implement!', E_USER_WARNING); trigger_error('Method buildAsyncResponses is not implemented!', E_USER_WARNING);
} }
/** /**

View File

@ -21,6 +21,7 @@ namespace Mibew\RequestProcessor;
use Mibew\Database; use Mibew\Database;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
/** /**
* Base class for all request processors that interact with JavaScript * Base class for all request processors that interact with JavaScript
@ -57,19 +58,24 @@ abstract class ClientSideProcessor extends AbstractProcessor
} }
/** /**
* Sends asynchronous responses * Builds asynchronous responses
* *
* @param array $responses An array of the 'Request' arrays. See Mibew API * @param array $responses An array of the 'Request' arrays. See Mibew API
* for details * for details
* @return Response A response object that is ready for sending to client.
*/ */
protected function sendAsyncResponses($responses) protected function buildAsyncResponses($responses)
{ {
header("Content-type: text/plain; charset=UTF-8"); $resp = new Response($this->mibewAPI->encodePackage(
echo($this->mibewAPI->encodePackage(
$responses, $responses,
$this->config['signature'], $this->config['signature'],
true true
)); ));
$resp->headers->set('Content-type', 'text/plain');
$resp->setCharset('UTF-8');
return $resp;
} }
/** /**