Invalidates non-safe methods (like POST, PUT, and DELETE).
protected invalidate ( |
||
$request | A Request instance | |
$catch | boolean | Whether to process exceptions |
return | A Response instance |
/** * Invalidates non-safe methods (like POST, PUT, and DELETE). * * @param Request $request * @param Boolean $catch Whether to process exceptions * * @return Response A Response instance */ protected function invalidate(Request $request, $catch = false) { if ($request->getMethod() !== 'BAN' && $request->getMethod() !== 'PURGE') { return parent::invalidate($request, $catch); } // Reject all non-authorized clients if (!$this->isPurgeRequestAllowed($request)) { return new Response('', 405); } $response = new Response(); if ($request->getMethod() === 'BAN') { if ($request->headers->has('x-shopware-invalidates')) { $cacheId = $request->headers->get('x-shopware-invalidates'); $result = $this->getStore()->purgeByHeader('x-shopware-cache-id', $cacheId); } else { $result = $this->getStore()->purgeAll(); } if ($result) { $response->setStatusCode(200, 'Banned'); } else { $response->setStatusCode(404, 'Not Banned'); } } elseif ($request->getMethod() === 'PURGE') { if ($this->getStore()->purge($request->getUri())) { $response->setStatusCode(200, 'Purged'); } else { $response->setStatusCode(404, 'Not purged'); } } return $response; }
/** * {@inheritDoc} * * Adding the Events::PRE_INVALIDATE event. */ protected function invalidate(Request $request, $catch = false) { if ($this->getEventDispatcher()->hasListeners(Events::PRE_INVALIDATE)) { $event = new CacheEvent($this, $request); $this->getEventDispatcher()->dispatch(Events::PRE_INVALIDATE, $event); if ($event->getResponse()) { return $event->getResponse(); } } return parent::invalidate($request, $catch); }
/** * Invalidates non-safe methods (like POST, PUT, and DELETE). * * @param \Symfony\Component\HttpFoundation\Request $request * @param Boolean $catch Whether to process exceptions * * @return \Symfony\Component\HttpFoundation\Response A Response instance * * @see RFC2616 13.10 */ protected function invalidate(Request $request, $catch = false) { if ($request->getMethod() === 'BAN') { $response = new Response(); $this->getStore()->purgeByHeader( 'x-shopware-cache-id', $request->getPathInfo() === '/' ? null : ltrim($request->getPathInfo(), '/') ); $response->setStatusCode(200, 'Banned'); } elseif($request->getMethod() === 'PURGE') { $response = new Response(); if ($this->getStore()->purge($request->getUri())) { $response->setStatusCode(200, 'Purged'); } else { $response->setStatusCode(404, 'Not purged'); } } else { $response = parent::invalidate($request); } return $response; }