/**
  * Determines which content types the client accepts. Acceptance is based on
  * the file extension parsed by the Router (if present), and by the HTTP_ACCEPT
  * header. Unlike Cake\Network\Request::accepts() this method deals entirely with mapped content types.
  *
  * Usage:
  *
  * `$this->RequestHandler->accepts(array('xml', 'html', 'json'));`
  *
  * Returns true if the client accepts any of the supplied types.
  *
  * `$this->RequestHandler->accepts('xml');`
  *
  * Returns true if the client accepts xml.
  *
  * @param string|array $type Can be null (or no parameter), a string type name, or an
  *   array of types
  * @return mixed If null or no parameter is passed, returns an array of content
  *   types the client accepts. If a string is passed, returns true
  *   if the client accepts it. If an array is passed, returns true
  *   if the client accepts one or more elements in the array.
  * @see RequestHandlerComponent::setContent()
  */
 public function accepts($type = null)
 {
     $accepted = $this->request->accepts();
     if (!$type) {
         return $this->response->mapType($accepted);
     }
     if (is_array($type)) {
         foreach ($type as $t) {
             $t = $this->mapAlias($t);
             if (in_array($t, $accepted)) {
                 return true;
             }
         }
         return false;
     }
     if (is_string($type)) {
         return in_array($this->mapAlias($type), $accepted);
     }
     return false;
 }
 /**
  * Content types from accepts() should respect the client's q preference values.
  *
  * @return void
  */
 public function testAcceptWithQvalueSorting()
 {
     $request = new Request(['environment' => ['HTTP_ACCEPT' => 'text/html;q=0.8,application/json;q=0.7,application/xml;q=1.0']]);
     $result = $request->accepts();
     $expected = ['application/xml', 'text/html', 'application/json'];
     $this->assertEquals($expected, $result);
 }