Esempio n. 1
0
 public static function validate_definition_arr($definition_arr)
 {
     self::st_reset_error();
     if (empty($definition_arr) or !is_array($definition_arr)) {
         self::st_set_error(self::ERR_DEFINITION, self::s2p_t('Definition is not an array.'));
         return true;
     }
     $default_definition = self::default_method_definition();
     $new_definition_arr = array();
     foreach ($default_definition as $key => $def_value) {
         if (!array_key_exists($key, $definition_arr)) {
             $new_definition_arr[$key] = $def_value;
         } else {
             $new_definition_arr[$key] = $definition_arr[$key];
         }
     }
     if (empty($new_definition_arr['name'])) {
         self::st_set_error(self::ERR_NAME, self::s2p_t('You should provide a name in method definition.'));
         return false;
     }
     if (empty($new_definition_arr['http_method']) or !S2P_SDK_Rest_API_Request::valid_http_method($new_definition_arr['http_method'])) {
         self::st_set_error(self::ERR_HTTP_METHOD, self::s2p_t('Invalid HTTP method for API method %s', $new_definition_arr['name']));
         return false;
     }
     if (!empty($new_definition_arr['get_variables'])) {
         if (!is_array($new_definition_arr['get_variables'])) {
             self::st_set_error(self::ERR_GET_VARIABLES, self::s2p_t('Invalid get variables for method %s.', $new_definition_arr['name']));
             return false;
         }
         $new_var_definition_arr = array();
         foreach ($new_definition_arr['get_variables'] as $key => $var_definition) {
             if (!($new_definition = self::validate_get_variable_definition($var_definition))) {
                 continue;
             }
             $new_var_definition_arr[$key] = $new_definition;
         }
         if (empty($new_var_definition_arr)) {
             $new_var_definition_arr = null;
         }
         $new_definition_arr['get_variables'] = $new_var_definition_arr;
     }
     if (self::st_has_error()) {
         return false;
     }
     /** @var S2P_SDK_Scope_Structure $new_definition_arr['request_structure'] */
     if (empty($new_definition_arr['request_structure'])) {
         $new_definition_arr['request_structure'] = null;
     } elseif (!$new_definition_arr['request_structure'] instanceof S2P_SDK_Scope_Structure) {
         self::st_set_error(self::ERR_REQUEST_STRUCTURE, self::s2p_t('Invalid request structure object for method %s.', $new_definition_arr['name']));
         return false;
     } elseif (!$new_definition_arr['request_structure']->get_validated_definition()) {
         self::st_copy_error($new_definition_arr['request_structure']);
         return false;
     }
     /** @var S2P_SDK_Scope_Structure $new_definition_arr['response_structure'] */
     if (empty($new_definition_arr['response_structure'])) {
         $new_definition_arr['response_structure'] = null;
     } elseif (!$new_definition_arr['response_structure'] instanceof S2P_SDK_Scope_Structure) {
         self::st_set_error(self::ERR_RESPONSE_STRUCTURE, self::s2p_t('Invalid response structure object for method %s.', $new_definition_arr['name']));
         return false;
     } elseif (!$new_definition_arr['response_structure']->get_validated_definition()) {
         self::st_copy_error($new_definition_arr['response_structure']);
         return false;
     }
     /** @var S2P_SDK_Scope_Structure $new_definition_arr['error_structure'] */
     if (empty($new_definition_arr['error_structure'])) {
         $new_definition_arr['error_structure'] = null;
     } elseif (!$new_definition_arr['error_structure'] instanceof S2P_SDK_Scope_Structure) {
         self::st_set_error(self::ERR_ERROR_STRUCTURE, self::s2p_t('Invalid error structure object for method %s.', $new_definition_arr['name']));
         return false;
     } elseif (!$new_definition_arr['error_structure']->get_validated_definition()) {
         self::st_copy_error($new_definition_arr['error_structure']);
         return false;
     }
     return $new_definition_arr;
 }