+/* {{{ proto bool HttpRequest::setRawPostData([string raw_post_data])
+ *
+ * Set raw post data to send. Don't forget to specify a content type.
+ * Affects only POST requests.
+ */
+PHP_METHOD(HttpRequest, setRawPostData)
+{
+ char *raw_data = NULL;
+ int data_len = 0;
+ getObject(http_request_object, obj);
+
+ if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &raw_data, &data_len)) {
+ RETURN_FALSE;
+ }
+
+ if (!raw_data) {
+ raw_data = "";
+ }
+
+ UPD_STRL(obj, rawPostData, raw_data, data_len);
+ RETURN_TRUE;
+}
+/* }}} */
+
+/* {{{ proto bool HttpRequest::addRawPostData(string raw_post_data)
+ *
+ * Add raw post data.
+ * Affects only POST requests.
+ */
+PHP_METHOD(HttpRequest, addRawPostData)
+{
+ char *raw_data, *new_data;
+ int data_len;
+ getObject(http_request_object, obj);
+
+ if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &raw_data, &data_len)) {
+ RETURN_FALSE;
+ }
+
+ if (data_len) {
+ zval *zdata = convert_to_type_ex(IS_STRING, GET_PROP(obj, rawPostData));
+
+ new_data = emalloc(Z_STRLEN_P(zdata) + data_len + 1);
+ new_data[Z_STRLEN_P(zdata) + data_len] = '\0';
+
+ if (Z_STRLEN_P(zdata)) {
+ memcpy(new_data, Z_STRVAL_P(zdata), Z_STRLEN_P(zdata));
+ }
+
+ memcpy(new_data + Z_STRLEN_P(zdata), raw_data, data_len);
+ UPD_STRL(obj, rawPostData, new_data, Z_STRLEN_P(zdata) + data_len);
+ }
+
+ RETURN_TRUE;
+}
+/* }}} */
+
+/* {{{ proto string HttpRequest::getRawPostData()
+ *
+ * Get previously set raw post data.
+ */
+PHP_METHOD(HttpRequest, getRawPostData)
+{
+ NO_ARGS;
+
+ IF_RETVAL_USED {
+ getObject(http_request_object, obj);
+ zval *raw_data = convert_to_type_ex(IS_STRING, GET_PROP(obj, rawPostData));
+
+ RETURN_ZVAL(raw_data, 1, 0);
+ }
+}
+/* }}} */
+