public static function handleRequest() { $request = array(); // parse the request metadata $request['metadata'] = CartAPI_Engine::getRequestMetadata(); // parse the request post data (if found) $request['data'] = array(); $post_data = CartAPI_Engine::getRequestPostData(); if ($post_data !== false) { $decoder = CartAPI_Engine::getDecoder($request['metadata']['X-FORMAT']); if ($decoder !== false) { $request['data'] = $decoder->parse($post_data); } } // override with parameters passed on the URL CartAPI_Engine::parseUrlRequestData($request['data']); // prepare an encoder for the response $request['encoder'] = CartAPI_Engine::getEncoder($request['metadata']['X-FORMAT']); if ($request['encoder'] === false) { return false; } // do some sanity checking if (!isset($request['metadata']['X-OPERATION'])) { CartAPI_Helpers::dieOnError($request['encoder'], 'IncompleteMetadata', 'X-OPERATION missing from metadata'); } return $request; }