- if (!http_request_body_fill(&body, fields_ht, files_ht)) {
- RETURN_FALSE;
- }
-
- switch (body.type) {
- case HTTP_REQUEST_BODY_CURLPOST:
- if (CURLE_OK != (rc = Curl_getFormData(&data, body.data, &size))) {
- http_error_ex(HE_WARNING, HTTP_E_RUNTIME, "Could not encode request body: %s", curl_easy_strerror(rc));
- RETVAL_FALSE;
- } else {
- phpstr_init_ex(&rbuf, (size_t) size, PHPSTR_INIT_PREALLOC);
- for (ptr = data; ptr; ptr = ptr->next) {
- if (!fgc_error) {
- if (ptr->type) {
- if ((fdata = file_get_contents(ptr->line, &fsize TSRMLS_CC))) {
- phpstr_append(&rbuf, fdata, fsize);
- efree(fdata);
- } else {
- fgc_error = 1;
- }
- } else {
- phpstr_append(&rbuf, ptr->line, ptr->length);
- }
- }
- curl_free(ptr->line);
- }
- curl_free(data);
- if (fgc_error) {
- phpstr_dtor(&rbuf);
- RETVAL_FALSE;
- } else {
- RETVAL_PHPSTR_VAL(&rbuf);
- }
- }
- http_request_body_dtor(&body);
- break;
-
- case HTTP_REQUEST_BODY_CSTRING:
- RETVAL_STRINGL(body.data, body.size, 0);
- break;
-
- default:
- http_request_body_dtor(&body);
- RETVAL_FALSE;
- break;
+ if (http_request_body_fill(&body, fields_ht, files_ht) && (SUCCESS == http_request_body_encode(&body, &buf, &len))) {
+ RETVAL_STRINGL(buf, len, 0);
+ } else {
+ http_error(HE_WARNING, HTTP_E_RUNTIME, "Could not encode request body");
+ RETVAL_FALSE;