Ejemplo n.º 1
0
 /**
  * Обрабатываем входящий запрос
  *
  */
 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;
 }