class NegotiationMiddleware in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php \Drupal\Core\StackMiddleware\NegotiationMiddleware
Provides a middleware to determine the content type upon the accept header.
@todo This is a temporary solution, remove this in https://www.drupal.org/node/2364011
Hierarchy
- class \Drupal\Core\StackMiddleware\NegotiationMiddleware implements HttpKernelInterface
Expanded class hierarchy of NegotiationMiddleware
1 file declares its use of NegotiationMiddleware
- NegotiationMiddlewareTest.php in core/
tests/ Drupal/ Tests/ Core/ StackMiddleware/ NegotiationMiddlewareTest.php - Contains \Drupal\Tests\Core\StackMiddleware\NegotiationMiddlewareTest.
1 string reference to 'NegotiationMiddleware'
- core.services.yml in core/
core.services.yml - core/core.services.yml
1 service uses NegotiationMiddleware
File
- core/
lib/ Drupal/ Core/ StackMiddleware/ NegotiationMiddleware.php, line 18 - Contains \Drupal\Core\StackMiddleware\NegotiationMiddleware.
Namespace
Drupal\Core\StackMiddlewareView source
class NegotiationMiddleware implements HttpKernelInterface {
/**
* The wrapped HTTP kernel.
*
* @var \Symfony\Component\HttpKernel\HttpKernelInterface
*/
protected $app;
/**
* Contains a hashmap of format as key and mimetype as value.
*
* @var array
*/
protected $formats = [];
/**
* Constructs a new NegotiationMiddleware.
*
* @param \Symfony\Component\HttpKernel\HttpKernelInterface $app
* The wrapper HTTP kernel
*/
public function __construct(HttpKernelInterface $app) {
$this->app = $app;
}
/**
* {@inheritdoc}
*/
public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true) {
// Register available mime types.
foreach ($this->formats as $format => $mime_type) {
$request
->setFormat($format, $mime_type);
}
// Determine the request format using the negotiator.
$request
->setRequestFormat($this
->getContentType($request));
return $this->app
->handle($request, $type, $catch);
}
/**
* Registers a format for a given MIME type.
*
* @param string $format
* The format.
* @param string $mime_type
* The MIME type.
*
* @return $this
*/
public function registerFormat($format, $mime_type) {
$this->formats[$format] = $mime_type;
return $this;
}
/**
* Gets the normalized type of a request.
*
* The normalized type is a short, lowercase version of the format, such as
* 'html', 'json' or 'atom'.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* The request object from which to extract the content type.
*
* @return string
* The normalized type of a given request.
*/
protected function getContentType(Request $request) {
// AJAX iframe uploads need special handling, because they contain a JSON
// response wrapped in <textarea>.
if ($request
->get('ajax_iframe_upload', FALSE)) {
return 'iframeupload';
}
if ($request->query
->has('_format')) {
return $request->query
->get('_format');
}
// Do HTML last so that it always wins.
return 'html';
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
HttpKernelInterface:: |
constant | |||
HttpKernelInterface:: |
constant | |||
NegotiationMiddleware:: |
protected | property | The wrapped HTTP kernel. | |
NegotiationMiddleware:: |
protected | property | Contains a hashmap of format as key and mimetype as value. | |
NegotiationMiddleware:: |
protected | function | Gets the normalized type of a request. | 1 |
NegotiationMiddleware:: |
public | function |
Handles a Request to convert it to a Response. Overrides HttpKernelInterface:: |
|
NegotiationMiddleware:: |
public | function | Registers a format for a given MIME type. | |
NegotiationMiddleware:: |
public | function | Constructs a new NegotiationMiddleware. |