/** * Process the resource path and query options of client's request uri. * * @param IService $service Reference to the data service instance. * * @return URIProcessor * * @throws ODataException */ public static function process(IService $service) { $absoluteRequestUri = $service->getHost()->getAbsoluteRequestUri(); $absoluteServiceUri = $service->getHost()->getAbsoluteServiceUri(); if (!$absoluteServiceUri->isBaseOf($absoluteRequestUri)) { throw ODataException::createInternalServerError(Messages::uriProcessorRequestUriDoesNotHaveTheRightBaseUri($absoluteRequestUri->getUrlAsString(), $absoluteServiceUri->getUrlAsString())); } $uriProcessor = new UriProcessor($service); //Parse the resource path part of the request Uri. $uriProcessor->request = ResourcePathProcessor::process($service); $uriProcessor->request->setUriProcessor($uriProcessor); //Parse the query string options of the request Uri. QueryProcessor::process($uriProcessor->request, $service); return $uriProcessor; }
/** * Process the OData query options and update RequestDescription accordingly. * * @param RequestDescription $request Description of the request submitted by client. * @param IService $service Reference to the data service. * * @return void * * @throws ODataException */ public static function process(RequestDescription $request, IService $service) { $queryProcessor = new QueryProcessor($request, $service); if ($request->getTargetSource() == TargetSource::NONE) { //A service directory, metadata or batch request $queryProcessor->_checkForEmptyQueryArguments(); } else { $queryProcessor->_processQuery(); } unset($queryProcessor); }