-STATUS php_http_client_object_requesthandler(php_http_client_object_t *obj, zval *this_ptr, char **meth, char **url, php_http_message_body_t **body TSRMLS_DC)
-{
- zval *zoptions;
- php_http_client_progress_t *progress;
-
- /* reset request handle */
- php_http_client_reset(obj->client);
- /* reset transfer info */
- zend_update_property_null(php_http_client_class_entry, getThis(), ZEND_STRL("info") TSRMLS_CC);
-
- if (meth) {
- *meth = Z_STRVAL_P(zend_read_property(php_http_client_class_entry, getThis(), ZEND_STRL("method"), 0 TSRMLS_CC));
- }
-
- if (url) {
- php_url *tmp, qdu = {NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL};
- zval *zurl = zend_read_property(php_http_client_class_entry, getThis(), ZEND_STRL("url"), 0 TSRMLS_CC);
- zval *zqdata = zend_read_property(php_http_client_class_entry, getThis(), ZEND_STRL("queryData"), 0 TSRMLS_CC);
-
- if (Z_STRLEN_P(zqdata)) {
- qdu.query = Z_STRVAL_P(zqdata);
- }
- php_http_url(0, tmp = php_url_parse(Z_STRVAL_P(zurl)), &qdu, NULL, url, NULL TSRMLS_CC);
- php_url_free(tmp);
- }
-
- if (body) {
- zval *zbody = zend_read_property(php_http_client_class_entry, getThis(), ZEND_STRL("requestBody"), 0 TSRMLS_CC);
-
- if (Z_TYPE_P(zbody) == IS_OBJECT) {
- *body = ((php_http_message_body_object_t *)zend_object_store_get_object(zbody TSRMLS_CC))->body;
- if (*body) {
- php_stream_rewind(php_http_message_body_stream(*body));
- }
- }
- }
-
- php_http_client_object_check_request_content_type(getThis() TSRMLS_CC);
- zoptions = zend_read_property(php_http_client_class_entry, getThis(), ZEND_STRL("options"), 0 TSRMLS_CC);
- php_http_client_setopt(obj->client, PHP_HTTP_CLIENT_OPT_SETTINGS, Z_ARRVAL_P(zoptions));
-
- if (SUCCESS == php_http_client_getopt(obj->client, PHP_HTTP_CLIENT_OPT_PROGRESS_INFO, &progress)) {
- if (!progress->callback) {
- php_http_client_progress_callback_t *callback = emalloc(sizeof(*callback));
-
- callback->type = PHP_HTTP_CLIENT_PROGRESS_CALLBACK_USER;
- callback->pass_state = 0;
- MAKE_STD_ZVAL(callback->func.user);
- array_init(callback->func.user);
- Z_ADDREF_P(getThis());
- add_next_index_zval(callback->func.user, getThis());
- add_next_index_stringl(callback->func.user, ZEND_STRL("notify"), 1);
-
- php_http_client_setopt(obj->client, PHP_HTTP_CLIENT_OPT_PROGRESS_CALLBACK, callback);
- }
- progress->state.info = "start";
- php_http_client_progress_notify(progress TSRMLS_CC);
- progress->state.started = 1;
- }
- return SUCCESS;
-}
-
-static inline void empty_response(zval *this_ptr TSRMLS_DC)
-{
- zend_update_property_null(php_http_client_class_entry, getThis(), ZEND_STRL("responseMessage") TSRMLS_CC);
-}