/** * Обрабатываем входящий запрос * */ public function request(\Happymeal\Port\Adaptor\Data\XML\Schema\AnyComplexType $adaptor = null) { if ($_SERVER["REQUEST_METHOD"] == "POST") { if (!isset($GLOBALS["HTTP_RAW_POST_DATA"])) { $GLOBALS["HTTP_RAW_POST_DATA"] = file_get_contents("php://input"); } if ($adaptor && array_key_exists("CONTENT_TYPE", $_SERVER) && strpos($_SERVER["CONTENT_TYPE"], "/xml") !== FALSE) { // todo: Можно проверить на соответствие схемы, хотя можно проверять через валидатор объекта $adaptor->fromXmlStr($GLOBALS["HTTP_RAW_POST_DATA"]); $this->REQUEST = $adaptor; } else { if ($adaptor && array_key_exists("CONTENT_TYPE", $_SERVER) && strpos($_SERVER["CONTENT_TYPE"], "/json") !== FALSE) { if ($json = json_decode($GLOBALS["HTTP_RAW_POST_DATA"])) { $adaptor->fromJSON(json_decode($GLOBALS["HTTP_RAW_POST_DATA"])); $this->REQUEST = $adaptor; } else { $this->throwError(new \Exception("JSON data error", 450)); } } else { $this->REQUEST = $_POST; } } $GLOBALS["HTTP_RAW_POST_DATA"] = NULL; } $this->QUERY = $_GET; return $this->REQUEST; }