/** * Configure the expose object to filter out fields that have been explicitly requested by the client. * This is only applicable for a HTTP pull (GET) call. For configuring * @param array $requestOptions * @param Request $request * @return ExposeFields $this object instance */ public function configurePullRequest(array $requestOptions, Request $request) { if (empty($this->route_expose)) { $exposeString = ''; foreach ($requestOptions as $requestOption => $requestValue) { switch ($requestOption) { case Configuration::EXPOSE_REQUEST_HEADER: $exposeString = $request->getHeaders($requestValue); break; case Configuration::EXPOSE_REQUEST_PARAM: $exposeString = $request->getParams($requestValue); break; case Configuration::EXPOSE_REQUEST_PARAM_GET: $exposeString = $request->getQuery($requestValue); break; case Configuration::EXPOSE_REQUEST_PARAM_POST: $exposeString = $request->getPost($requestValue); break; } } if (!empty($exposeString)) { $requestedExposure = $this->parseExposeString($exposeString); $this->filterRequestedExpose($requestedExposure, $this->fields); $this->fields = $requestedExposure; } } return $this; }
/** * Uses configuration options to determine whether this writer instance is the media type expected by the client * @param array $configOptions - configuration options for content detection * @param Request $request - request object * @return boolean $result */ public final function isExpectedContent(array $configOptions, Request $request) { foreach ($configOptions as $detectContentOption => $detectContentValue) { switch ($detectContentOption) { case 1: // HTTP Header $headers = explode(',', $request->getHeaders($detectContentValue)); foreach ($headers as $headerEntry) { if (false !== ($pos = strpos($headerEntry, ';'))) { $headerEntry = substr($headerEntry, 0, $pos); } // See if the header matches for this writer if (in_array(trim($headerEntry), $this->getMatchableAcceptHeaders())) { return true; } } break; case 2: // Extension // See if an extension has been supplied $ext = $request->getExtension(); if (!empty($ext) && in_array($request->getExtension(), $this->getMatchableExtensions())) { return true; } break; case 3: // Parameter // Inspect the request object for a "format" parameter if (in_array($request->getQuery($detectContentValue), $this->getMatchableFormatParams())) { return true; } break; } } return false; }