- don't call into ext/zlib any longer
[m6w6/ext-http] / http_request_object.c
index 8280f976317eb86f02a86bdbf648793c145a0dd6..e189c214ed1379aa7d97bcc4223ad33ec4e15251 100644 (file)
@@ -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)
 
@@ -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));
@@ -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.