/**
  * @param Symfony\Components\EventDispatcher\Event $event
  * @param Bundle\ServerBundle\ResponseInterface $response
  * @return Bundle\ServerBundle\ResponseInterface
  *
  * @see Symfony\Components\EventDispatcher\EventDispatcher::filter()
  */
 public function filter(Event $event, ResponseInterface $response)
 {
     $request = $event->getSubject();
     if ($request->hasHeader('Accept-Encoding')) {
         foreach ($request->splitHttpAcceptHeader($request->getHeader('Accept-Encoding')) as $encoding) {
             $encoding = strtolower($encoding);
             if (in_array($encoding, $this->encodings)) {
                 $response->setBody($compressed = call_user_func(array($this, $encoding), $body = $response->getBody()));
                 $response->setHeader('Content-Encoding', $encoding);
                 $response->setHeader('Content-Length', $length = strlen($compressed));
                 // add compression statistics
                 $event->setParameter('compression', true);
                 $event->setParameter('compression.encoding', $encoding);
                 $event->setParameter('compression.level', $this->level);
                 $event->setParameter('compression.before', strlen($body));
                 $event->setParameter('compression.after', $length);
                 return $response;
             }
         }
     }
     return $response;
 }
예제 #2
0
$parameters = array('foo' => 'bar');
$event = new Event($subject, 'name', $parameters);

// ->getSubject()
$t->diag('->getSubject()');
$t->is($event->getSubject(), $subject, '->getSubject() returns the event subject');

// ->getName()
$t->diag('->getName()');
$t->is($event->getName(), 'name', '->getName() returns the event name');

// ->getParameters() ->setParameter() ->hasParameter() ->getParameter()
$t->diag('->getParameters()');
$t->is($event->getParameters(), $parameters, '->getParameters() returns the event parameters');
$t->is($event->getParameter('foo'), 'bar', '->getParameter() returns the value of a parameter');
$event->setParameter('foo', 'foo');
$t->is($event->getParameter('foo'), 'foo', '->setParameter() changes the value of a parameter');
$t->ok($event->hasParameter('foo'), '->hasParameter() returns true if the parameter is defined');
unset($event['foo']);
$t->ok(!$event->hasParameter('foo'), '->hasParameter() returns false if the parameter is not defined');

try
{
  $event->getParameter('foobar');
  $t->fail('->getParameter() throws an \InvalidArgumentException exception when the parameter does not exist');
}
catch (\InvalidArgumentException $e)
{
  $t->pass('->getParameter() throws an \InvalidArgumentException exception when the parameter does not exist');
}
$event = new Event($subject, 'name', $parameters);