X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_message_object.c;h=824745f460f041b99e162b18fcdc72b74a151efb;hp=a04438b526faa6f8ceb060f3e7e42bf3e8b74d47;hb=ebf03950ffaea849b931adf83b6c20ac9fb7ef33;hpb=b0719c36a9a5340adb9a7cbabe0b486b215dee1f diff --git a/http_message_object.c b/http_message_object.c index a04438b..824745f 100644 --- a/http_message_object.c +++ b/http_message_object.c @@ -32,11 +32,9 @@ #include "php_http_request_api.h" #include "php_http_request_object.h" -#ifndef WONKY -# ifdef HAVE_SPL +#if defined(HAVE_SPL) && !HTTP_SHARED_EXT(SPL) && !defined(WONKY) /* SPL doesn't install its headers */ extern PHPAPI zend_class_entry *spl_ce_Countable; -# endif #endif #define HTTP_BEGIN_ARGS(method, req_args) HTTP_BEGIN_ARGS_EX(HttpMessage, method, 0, req_args) @@ -187,7 +185,7 @@ PHP_MINIT_FUNCTION(http_message_object) HTTP_REGISTER_CLASS_EX(HttpMessage, http_message_object, NULL, 0); #ifndef WONKY -# ifdef HAVE_SPL +# if defined(HAVE_SPL) && !HTTP_SHARED_EXT(SPL) zend_class_implements(http_message_object_ce TSRMLS_CC, 3, spl_ce_Countable, zend_ce_serializable, zend_ce_iterator); # else zend_class_implements(http_message_object_ce TSRMLS_CC, 2, zend_ce_serializable, zend_ce_iterator); @@ -410,24 +408,24 @@ static zval *_http_message_object_read_prop(zval *object, zval *member, int type case HTTP_MSG_PROPHASH_TYPE: case HTTP_MSG_CHILD_PROPHASH_TYPE: RETVAL_LONG(msg->type); - break; + break; case HTTP_MSG_PROPHASH_HTTP_VERSION: case HTTP_MSG_CHILD_PROPHASH_HTTP_VERSION: RETVAL_DOUBLE(msg->http.version); - break; + break; case HTTP_MSG_PROPHASH_BODY: case HTTP_MSG_CHILD_PROPHASH_BODY: phpstr_fix(PHPSTR(msg)); RETVAL_PHPSTR(PHPSTR(msg), 0, 1); - break; + break; case HTTP_MSG_PROPHASH_HEADERS: case HTTP_MSG_CHILD_PROPHASH_HEADERS: array_init(return_value); zend_hash_copy(Z_ARRVAL_P(return_value), &msg->hdrs, (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval *)); - break; + break; case HTTP_MSG_PROPHASH_PARENT_MESSAGE: case HTTP_MSG_CHILD_PROPHASH_PARENT_MESSAGE: @@ -436,7 +434,7 @@ static zval *_http_message_object_read_prop(zval *object, zval *member, int type } else { RETVAL_NULL(); } - break; + break; case HTTP_MSG_PROPHASH_REQUEST_METHOD: case HTTP_MSG_CHILD_PROPHASH_REQUEST_METHOD: @@ -445,7 +443,7 @@ static zval *_http_message_object_read_prop(zval *object, zval *member, int type } else { RETVAL_NULL(); } - break; + break; case HTTP_MSG_PROPHASH_REQUEST_URL: case HTTP_MSG_CHILD_PROPHASH_REQUEST_URL: @@ -454,7 +452,7 @@ static zval *_http_message_object_read_prop(zval *object, zval *member, int type } else { RETVAL_NULL(); } - break; + break; case HTTP_MSG_PROPHASH_RESPONSE_CODE: case HTTP_MSG_CHILD_PROPHASH_RESPONSE_CODE: @@ -463,7 +461,7 @@ static zval *_http_message_object_read_prop(zval *object, zval *member, int type } else { RETVAL_NULL(); } - break; + break; case HTTP_MSG_PROPHASH_RESPONSE_STATUS: case HTTP_MSG_CHILD_PROPHASH_RESPONSE_STATUS: @@ -472,7 +470,7 @@ static zval *_http_message_object_read_prop(zval *object, zval *member, int type } else { RETVAL_NULL(); } - break; + break; default: #ifdef WONKY @@ -480,7 +478,6 @@ static zval *_http_message_object_read_prop(zval *object, zval *member, int type #else RETVAL_NULL(); #endif - break; } return return_value; @@ -514,27 +511,27 @@ static void _http_message_object_write_prop(zval *object, zval *member, zval *va case HTTP_MSG_CHILD_PROPHASH_TYPE: convert_to_long(cpy); http_message_set_type(msg, Z_LVAL_P(cpy)); - break; + break; case HTTP_MSG_PROPHASH_HTTP_VERSION: case HTTP_MSG_CHILD_PROPHASH_HTTP_VERSION: convert_to_double(cpy); msg->http.version = Z_DVAL_P(cpy); - break; + break; case HTTP_MSG_PROPHASH_BODY: case HTTP_MSG_CHILD_PROPHASH_BODY: convert_to_string(cpy); phpstr_dtor(PHPSTR(msg)); phpstr_from_string_ex(PHPSTR(msg), Z_STRVAL_P(cpy), Z_STRLEN_P(cpy)); - break; + break; case HTTP_MSG_PROPHASH_HEADERS: case HTTP_MSG_CHILD_PROPHASH_HEADERS: convert_to_array(cpy); zend_hash_clean(&msg->hdrs); zend_hash_copy(&msg->hdrs, Z_ARRVAL_P(cpy), (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval *)); - break; + break; case HTTP_MSG_PROPHASH_PARENT_MESSAGE: case HTTP_MSG_CHILD_PROPHASH_PARENT_MESSAGE: @@ -547,7 +544,7 @@ static void _http_message_object_write_prop(zval *object, zval *member, zval *va Z_OBJ_ADDREF_P(value); obj->parent = value->value.obj; } - break; + break; case HTTP_MSG_PROPHASH_REQUEST_METHOD: case HTTP_MSG_CHILD_PROPHASH_REQUEST_METHOD: @@ -555,7 +552,7 @@ static void _http_message_object_write_prop(zval *object, zval *member, zval *va convert_to_string(cpy); STR_SET(msg->http.info.request.method, estrndup(Z_STRVAL_P(cpy), Z_STRLEN_P(cpy))); } - break; + break; case HTTP_MSG_PROPHASH_REQUEST_URL: case HTTP_MSG_CHILD_PROPHASH_REQUEST_URL: @@ -563,7 +560,7 @@ static void _http_message_object_write_prop(zval *object, zval *member, zval *va convert_to_string(cpy); STR_SET(msg->http.info.request.url, estrndup(Z_STRVAL_P(cpy), Z_STRLEN_P(cpy))); } - break; + break; case HTTP_MSG_PROPHASH_RESPONSE_CODE: case HTTP_MSG_CHILD_PROPHASH_RESPONSE_CODE: @@ -571,7 +568,7 @@ static void _http_message_object_write_prop(zval *object, zval *member, zval *va convert_to_long(cpy); msg->http.info.response.code = Z_LVAL_P(cpy); } - break; + break; case HTTP_MSG_PROPHASH_RESPONSE_STATUS: case HTTP_MSG_CHILD_PROPHASH_RESPONSE_STATUS: @@ -579,13 +576,13 @@ static void _http_message_object_write_prop(zval *object, zval *member, zval *va convert_to_string(cpy); STR_SET(msg->http.info.response.status, estrndup(Z_STRVAL_P(cpy), Z_STRLEN_P(cpy))); } - break; + break; default: #ifdef WONKY zend_get_std_object_handlers()->write_property(object, member, value TSRMLS_CC); #endif - break; + break; } zval_free(&cpy); } @@ -621,21 +618,20 @@ static HashTable *_http_message_object_get_props(zval *object TSRMLS_DC) ASSOC_PROP(array, long, "type", msg->type); ASSOC_PROP(array, double, "httpVersion", msg->http.version); - switch (msg->type) - { + switch (msg->type) { case HTTP_MSG_REQUEST: ASSOC_PROP(array, long, "responseCode", 0); ASSOC_STRINGL(array, "responseStatus", "", 0); ASSOC_STRING(array, "requestMethod", msg->http.info.request.method); ASSOC_STRING(array, "requestUrl", msg->http.info.request.url); - break; + break; case HTTP_MSG_RESPONSE: ASSOC_PROP(array, long, "responseCode", msg->http.info.response.code); ASSOC_STRING(array, "responseStatus", msg->http.info.response.status); ASSOC_STRINGL(array, "requestMethod", "", 0); ASSOC_STRINGL(array, "requestUrl", "", 0); - break; + break; case HTTP_MSG_NONE: default: @@ -643,7 +639,7 @@ static HashTable *_http_message_object_get_props(zval *object TSRMLS_DC) ASSOC_STRINGL(array, "responseStatus", "", 0); ASSOC_STRINGL(array, "requestMethod", "", 0); ASSOC_STRINGL(array, "requestUrl", "", 0); - break; + break; } MAKE_STD_ZVAL(headers); @@ -753,7 +749,7 @@ PHP_METHOD(HttpMessage, getBody) { NO_ARGS; - IF_RETVAL_USED { + if (return_value_used) { getObject(http_message_object, obj); RETURN_PHPSTR(&obj->message->body, PHPSTR_FREE_NOT, 1); } @@ -790,7 +786,7 @@ PHP_METHOD(HttpMessage, getHeaders) { NO_ARGS; - IF_RETVAL_USED { + if (return_value_used) { zval headers; getObject(http_message_object, obj); @@ -862,7 +858,7 @@ PHP_METHOD(HttpMessage, getType) { NO_ARGS; - IF_RETVAL_USED { + if (return_value_used) { getObject(http_message_object, obj); RETURN_LONG(obj->message->type); } @@ -898,7 +894,7 @@ PHP_METHOD(HttpMessage, getResponseCode) { NO_ARGS; - IF_RETVAL_USED { + if (return_value_used) { getObject(http_message_object, obj); HTTP_CHECK_MESSAGE_TYPE_RESPONSE(obj->message, RETURN_FALSE); RETURN_LONG(obj->message->http.info.response.code); @@ -946,7 +942,7 @@ PHP_METHOD(HttpMessage, getResponseStatus) { NO_ARGS; - IF_RETVAL_USED { + if (return_value_used) { getObject(http_message_object, obj); HTTP_CHECK_MESSAGE_TYPE_RESPONSE(obj->message, RETURN_FALSE); RETURN_STRING(obj->message->http.info.response.status, 1); @@ -990,7 +986,7 @@ PHP_METHOD(HttpMessage, getRequestMethod) { NO_ARGS; - IF_RETVAL_USED { + if (return_value_used) { getObject(http_message_object, obj); HTTP_CHECK_MESSAGE_TYPE_REQUEST(obj->message, RETURN_FALSE); RETURN_STRING(obj->message->http.info.request.method, 1); @@ -1022,8 +1018,8 @@ PHP_METHOD(HttpMessage, setRequestMethod) http_error(HE_WARNING, HTTP_E_INVALID_PARAM, "Cannot set HttpMessage::requestMethod to an empty string"); RETURN_FALSE; } - if (SUCCESS != http_check_method(method)) { - http_error_ex(HE_WARNING, HTTP_E_REQUEST_METHOD, "Unkown request method: %s", method); + if (!http_request_method_exists(1, 0, method)) { + http_error_ex(HE_WARNING, HTTP_E_REQUEST_METHOD, "Unknown request method: %s", method); RETURN_FALSE; } @@ -1043,7 +1039,7 @@ PHP_METHOD(HttpMessage, getRequestUrl) { NO_ARGS; - IF_RETVAL_USED { + if (return_value_used) { getObject(http_message_object, obj); HTTP_CHECK_MESSAGE_TYPE_REQUEST(obj->message, RETURN_FALSE); RETURN_STRING(obj->message->http.info.request.url, 1); @@ -1090,7 +1086,7 @@ PHP_METHOD(HttpMessage, getHttpVersion) { NO_ARGS; - IF_RETVAL_USED { + if (return_value_used) { char ver[4] = {0}; getObject(http_message_object, obj); @@ -1133,10 +1129,10 @@ PHP_METHOD(HttpMessage, setHttpVersion) /* {{{ proto HttpMessage HttpMessage::getParentMessage() * * Get parent Message. - * + * * Returns the parent HttpMessage on success, or NULL if there's none. * - * Throws HttpMessageException. + * Throws HttpRuntimeException. */ PHP_METHOD(HttpMessage, getParentMessage) { @@ -1182,7 +1178,7 @@ PHP_METHOD(HttpMessage, send) */ PHP_METHOD(HttpMessage, toString) { - IF_RETVAL_USED { + if (return_value_used) { char *string; size_t length; zend_bool include_parent = 0; @@ -1216,11 +1212,10 @@ PHP_METHOD(HttpMessage, toMessageTypeObject) NO_ARGS; - IF_RETVAL_USED { + if (return_value_used) { getObject(http_message_object, obj); - switch (obj->message->type) - { + switch (obj->message->type) { case HTTP_MSG_REQUEST: { #ifdef HTTP_HAVE_CURL @@ -1263,8 +1258,8 @@ PHP_METHOD(HttpMessage, toMessageTypeObject) #else http_error(HE_WARNING, HTTP_E_RUNTIME, "Cannot transform HttpMessage to HttpRequest (missing curl support)"); #endif + break; } - break; case HTTP_MSG_RESPONSE: { @@ -1288,8 +1283,7 @@ PHP_METHOD(HttpMessage, toMessageTypeObject) INIT_PZVAL(&zkey); ZVAL_STRINGL(&zkey, key, key_len, 0); - switch (Z_TYPE_PP(header)) - { + switch (Z_TYPE_PP(header)) { case IS_ARRAY: case IS_OBJECT: FOREACH_HASH_VAL(pos2, HASH_OF(*header), h) { @@ -1297,13 +1291,13 @@ PHP_METHOD(HttpMessage, toMessageTypeObject) zend_call_method_with_2_params(&return_value, http_response_object_ce, NULL, "setheader", NULL, &zkey, *h); zval_ptr_dtor(h); } - break; + break; default: ZVAL_ADDREF(*header); zend_call_method_with_2_params(&return_value, http_response_object_ce, NULL, "setheader", NULL, &zkey, *header); zval_ptr_dtor(header); - break; + break; } key = NULL; } @@ -1316,12 +1310,12 @@ PHP_METHOD(HttpMessage, toMessageTypeObject) #else http_error(HE_WARNING, HTTP_E_RUNTIME, "Cannot transform HttpMessage to HttpResponse (need PHP 5.1+)"); #endif + break; } - break; default: http_error(HE_WARNING, HTTP_E_MESSAGE_TYPE, "HttpMessage is neither of type HttpMessage::TYPE_REQUEST nor HttpMessage::TYPE_RESPONSE"); - break; + break; } } SET_EH_NORMAL(); @@ -1412,13 +1406,13 @@ PHP_METHOD(HttpMessage, detach) } /* }}} */ -/* {{{ proto void HttpMessage::prepend(HttpMessage message) +/* {{{ proto void HttpMessage::prepend(HttpMessage message[, bool top = true]) * * Prepends message(s) to the HTTP message. * * Expects an HttpMessage object as parameter. * - * Throws HttpInvalidParamException if the messages are located within the same message chain. + * Throws HttpInvalidParamException if the message is located within the same message chain. */ PHP_METHOD(HttpMessage, prepend) {