public function onBeforeRequest(ProxyEvent $event)
 {
     $response = $this->fetch($event['request']);
     if ($response) {
         // tell proxy client that we do not need to actually perform any HTTP requests
         $event['request']->params->set('request.complete', true);
         // replace response
         // TODO: must be a better way
         $event['response']->setContent($data->getContent());
         $event['response']->headers->replace($data->headers->all());
         $event['response']->headers->set('X-Cache', 'hit');
         // don't need any plugin to modify this request any further because response is already in place
         $event->stopPropagation();
     } else {
         $event['response']->headers->set('X-Cache', 'miss');
     }
 }
Example #2
0
 public final function route(ProxyEvent $event)
 {
     $url = $event['request']->getUri();
     // url filter provided and current request url does not match it
     if ($this->url_pattern && strpos($url, $this->url_pattern) === false) {
         return;
     }
     switch ($event->getName()) {
         case 'request.before_send':
             $this->onBeforeRequest($event);
             break;
         case 'request.sent':
             $this->onHeadersReceived($event);
             break;
         case 'curl.callback.write':
             $this->onCurlWrite($event);
             break;
         case 'request.complete':
             $this->onCompleted($event);
             break;
     }
 }