X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_request_object.c;h=e189c214ed1379aa7d97bcc4223ad33ec4e15251;hb=bee9b3775968701c021233bf8623c92c1dc7e7b5;hp=8d6e798ebefc95e2a4ac2089c380df375a3142a4;hpb=649aada485583ccac67928e0700cb5f1b963f4e8;p=m6w6%2Fext-http diff --git a/http_request_object.c b/http_request_object.c index 8d6e798..e189c21 100644 --- a/http_request_object.c +++ b/http_request_object.c @@ -147,11 +147,13 @@ HTTP_BEGIN_ARGS(getResponseInfo, 0, 0) HTTP_ARG_VAL(name, 0) HTTP_END_ARGS; -HTTP_EMPTY_ARGS(getResponseMessage, 1); -HTTP_EMPTY_ARGS(getRequestMessage, 1); -HTTP_EMPTY_ARGS(getHistory, 1); +HTTP_EMPTY_ARGS(getResponseMessage, 0); +HTTP_EMPTY_ARGS(getRawResponseMessage, 0); +HTTP_EMPTY_ARGS(getRequestMessage, 0); +HTTP_EMPTY_ARGS(getRawRequestMessage, 0); +HTTP_EMPTY_ARGS(getHistory, 0); HTTP_EMPTY_ARGS(clearHistory, 0); -HTTP_EMPTY_ARGS(send, 1); +HTTP_EMPTY_ARGS(send, 0); HTTP_BEGIN_ARGS(get, 0, 1) HTTP_ARG_VAL(url, 0) @@ -267,7 +269,9 @@ zend_function_entry http_request_object_fe[] = { HTTP_REQUEST_ME(getResponseBody, ZEND_ACC_PUBLIC) HTTP_REQUEST_ME(getResponseInfo, ZEND_ACC_PUBLIC) HTTP_REQUEST_ME(getResponseMessage, ZEND_ACC_PUBLIC) + HTTP_REQUEST_ME(getRawResponseMessage, ZEND_ACC_PUBLIC) HTTP_REQUEST_ME(getRequestMessage, ZEND_ACC_PUBLIC) + HTTP_REQUEST_ME(getRawRequestMessage, ZEND_ACC_PUBLIC) HTTP_REQUEST_ME(getHistory, ZEND_ACC_PUBLIC) HTTP_REQUEST_ME(clearHistory, ZEND_ACC_PUBLIC) @@ -348,7 +352,7 @@ static inline void _http_request_object_declare_default_properties(TSRMLS_D) DCL_PROP_N(PROTECTED, options); DCL_PROP_N(PROTECTED, responseInfo); DCL_PROP_N(PROTECTED, responseData); - DCL_PROP_N(PROTECTED, responseCode); + DCL_PROP(PROTECTED, long, responseCode, 0); DCL_PROP_N(PROTECTED, responseMessage); DCL_PROP_N(PROTECTED, postFields); DCL_PROP_N(PROTECTED, postFiles); @@ -431,14 +435,8 @@ STATUS _http_request_object_requesthandler(http_request_object *obj, zval *this_ HTTP_CHECK_CURL_INIT(obj->request->ch, curl_easy_init(), return FAILURE); URL = convert_to_type_ex(IS_STRING, GET_PROP(obj, url), &URL_p); - obj->request->url = http_absolute_uri_ex(Z_STRVAL_P(URL), Z_STRLEN_P(URL), NULL, 0, NULL, 0, 0); - if (URL_p) { - zval_ptr_dtor(&URL_p); - } - - if (!obj->request->url) { - return FAILURE; - } + obj->request->url = http_absolute_url(Z_STRVAL_P(URL)); + if (URL_p) zval_ptr_dtor(&URL_p); switch (obj->request->meth = Z_LVAL_P(convert_to_type_ex(IS_LONG, GET_PROP(obj, method), &meth_p))) { @@ -532,11 +530,11 @@ STATUS _http_request_object_requesthandler(http_request_object *obj, zval *this_ if (Z_STRLEN_P(qdata)) { if (!strchr(obj->request->url, '?')) { - strlcat(obj->request->url, "?", HTTP_URI_MAXLEN); + strlcat(obj->request->url, "?", HTTP_URL_MAXLEN); } else { - strlcat(obj->request->url, "&", HTTP_URI_MAXLEN); + strlcat(obj->request->url, "&", HTTP_URL_MAXLEN); } - strlcat(obj->request->url, Z_STRVAL_P(qdata), HTTP_URI_MAXLEN); + strlcat(obj->request->url, Z_STRVAL_P(qdata), HTTP_URL_MAXLEN); } http_request_prepare(obj->request, Z_ARRVAL_P(options)); @@ -601,7 +599,7 @@ STATUS _http_request_object_responsehandler(http_request_object *obj, zval *this UPD_PROP(obj, long, responseCode, msg->http.info.response.code); - MAKE_STD_ZVAL(headers) + MAKE_STD_ZVAL(headers); array_init(headers); zend_hash_copy(Z_ARRVAL_P(headers), &msg->hdrs, (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval *)); @@ -1881,6 +1879,44 @@ PHP_METHOD(HttpRequest, getRequestMessage) } /* }}} */ +/* {{{ proto string HttpRequest::getRawRequestMessage() + * + * Get sent HTTP message. + * + * Returns an HttpMessage in a form of a string + * + */ +PHP_METHOD(HttpRequest, getRawRequestMessage) +{ + NO_ARGS; + + IF_RETVAL_USED { + getObject(http_request_object, obj); + + RETURN_PHPSTR_DUP(&obj->request->conv.request); + } +} +/* }}} */ + +/* {{{ proto string HttpRequest::getRawResponseMessage() + * + * Get the entire HTTP response. + * + * Returns the complete web server response, including the headers in a form of a string. + * + */ +PHP_METHOD(HttpRequest, getRawResponseMessage) +{ + NO_ARGS; + + IF_RETVAL_USED { + getObject(http_request_object, obj); + + RETURN_PHPSTR_DUP(&obj->request->conv.response); + } +} +/* }}} */ + /* {{{ proto HttpMessage HttpRequest::getHistory() * * Get all sent requests and received responses as an HttpMessage object.