+/* STATUS http_request_body_encode(http_request_body *, char**, size_t *) */
+PHP_HTTP_API STATUS _http_request_body_encode(http_request_body *body, char **buf, size_t *len TSRMLS_DC)
+{
+ switch (body->type) {
+ case HTTP_REQUEST_BODY_CURLPOST:
+ {
+#if defined(HAVE_CURL_FORMGET)
+ phpstr str;
+
+ phpstr_init_ex(&str, 0x8000, 0);
+ if (curl_formget(body->data, &str, (curl_formget_callback) phpstr_append)) {
+ phpstr_dtor(&str);
+ } else {
+ phpstr_fix(&str);
+ *buf = PHPSTR_VAL(&str);
+ *len = PHPSTR_LEN(&str);
+ return SUCCESS;
+ }
+#elif defined(HAVE_CURL_GETFORMDATA)
+ struct FormData *data;
+ curl_off_t size;
+
+ if (!Curl_getFormData(&data, body->data, &size)) {
+ phpstr str;
+
+ phpstr_init_ex(&str, (size_t) size, 0);
+ if (curl_formget(data, &str TSRMLS_CC)) {
+ phpstr_dtor(&str);
+ } else {
+ phpstr_fix(&str);
+ *buf = PHPSTR_VAL(&str);
+ *len = PHPSTR_LEN(&len);
+ return SUCCESS;
+ }
+ }
+#endif
+ break;
+ }
+
+ case HTTP_REQUEST_BODY_CSTRING:
+ *buf = estrndup(body->data, *len = body->size);
+ return SUCCESS;
+
+ default:
+ break;
+ }
+ return FAILURE;
+}
+/* }}} */