+#include "php_http_request_object.h"
+#include "php_http_request_pool_api.h"
+#include "php_http_url_api.h"
+
+#define HTTP_BEGIN_ARGS(method, req_args) HTTP_BEGIN_ARGS_EX(HttpRequest, method, 0, req_args)
+#define HTTP_EMPTY_ARGS(method) HTTP_EMPTY_ARGS_EX(HttpRequest, method, 0)
+#define HTTP_REQUEST_ME(method, visibility) PHP_ME(HttpRequest, method, HTTP_ARGS(HttpRequest, method), visibility)
+#define HTTP_REQUEST_ALIAS(method, func) HTTP_STATIC_ME_ALIAS(method, func, HTTP_ARGS(HttpRequest, method))
+#define HTTP_REQUEST_MALIAS(me, al, vis) ZEND_FENTRY(me, ZEND_MN(HttpRequest_##al), HTTP_ARGS(HttpRequest, al), vis)
+
+HTTP_BEGIN_ARGS(__construct, 0)
+ HTTP_ARG_VAL(url, 0)
+ HTTP_ARG_VAL(method, 0)
+ HTTP_ARG_VAL(options, 0)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(factory, 0)
+ HTTP_ARG_VAL(url, 0)
+ HTTP_ARG_VAL(method, 0)
+ HTTP_ARG_VAL(options, 0)
+ HTTP_ARG_VAL(class_name, 0)
+HTTP_END_ARGS;
+
+HTTP_EMPTY_ARGS(getOptions);
+HTTP_BEGIN_ARGS(setOptions, 0)
+ HTTP_ARG_VAL(options, 0)
+HTTP_END_ARGS;
+
+HTTP_EMPTY_ARGS(getSslOptions);
+HTTP_BEGIN_ARGS(setSslOptions, 0)
+ HTTP_ARG_VAL(ssl_options, 0)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(addSslOptions, 0)
+ HTTP_ARG_VAL(ssl_optins, 0)
+HTTP_END_ARGS;
+
+HTTP_EMPTY_ARGS(getHeaders);
+HTTP_BEGIN_ARGS(setHeaders, 0)
+ HTTP_ARG_VAL(headers, 0)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(addHeaders, 1)
+ HTTP_ARG_VAL(headers, 0)
+HTTP_END_ARGS;
+
+HTTP_EMPTY_ARGS(getCookies);
+HTTP_BEGIN_ARGS(setCookies, 0)
+ HTTP_ARG_VAL(cookies, 0)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(addCookies, 1)
+ HTTP_ARG_VAL(cookies, 0)
+HTTP_END_ARGS;
+
+HTTP_EMPTY_ARGS(enableCookies);
+HTTP_BEGIN_ARGS(resetCookies, 0)
+ HTTP_ARG_VAL(session_only, 0)
+HTTP_END_ARGS;
+HTTP_EMPTY_ARGS(flushCookies);
+
+HTTP_EMPTY_ARGS(getUrl);
+HTTP_BEGIN_ARGS(setUrl, 1)
+ HTTP_ARG_VAL(url, 0)
+HTTP_END_ARGS;
+
+HTTP_EMPTY_ARGS(getMethod);
+HTTP_BEGIN_ARGS(setMethod, 1)
+ HTTP_ARG_VAL(request_method, 0)
+HTTP_END_ARGS;
+
+HTTP_EMPTY_ARGS(getContentType);
+HTTP_BEGIN_ARGS(setContentType, 1)
+ HTTP_ARG_VAL(content_type, 0)
+HTTP_END_ARGS;
+
+HTTP_EMPTY_ARGS(getQueryData);
+HTTP_BEGIN_ARGS(setQueryData, 0)
+ HTTP_ARG_VAL(query_data, 0)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(addQueryData, 1)
+ HTTP_ARG_VAL(query_data, 0)
+HTTP_END_ARGS;
+
+HTTP_EMPTY_ARGS(getPostFields);
+HTTP_BEGIN_ARGS(setPostFields, 0)
+ HTTP_ARG_VAL(post_fields, 0)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(addPostFields, 1)
+ HTTP_ARG_VAL(post_fields, 0)
+HTTP_END_ARGS;
+
+HTTP_EMPTY_ARGS(getPostFiles);
+HTTP_BEGIN_ARGS(setPostFiles, 0)
+ HTTP_ARG_VAL(post_files, 0)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(addPostFile, 2)
+ HTTP_ARG_VAL(formname, 0)
+ HTTP_ARG_VAL(filename, 0)
+ HTTP_ARG_VAL(content_type, 0)
+HTTP_END_ARGS;
+
+HTTP_EMPTY_ARGS(getBody);
+HTTP_BEGIN_ARGS(setBody, 0)
+ HTTP_ARG_VAL(request_body_data, 0)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(addBody, 1)
+ HTTP_ARG_VAL(request_body_data, 0)
+HTTP_END_ARGS;
+
+HTTP_EMPTY_ARGS(getPutFile);
+HTTP_BEGIN_ARGS(setPutFile, 0)
+ HTTP_ARG_VAL(filename, 0)
+HTTP_END_ARGS;
+
+HTTP_EMPTY_ARGS(getPutData);
+HTTP_BEGIN_ARGS(setPutData, 0)
+ HTTP_ARG_VAL(put_data, 0)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(addPutData, 1)
+ HTTP_ARG_VAL(put_data, 0)
+HTTP_END_ARGS;
+
+HTTP_EMPTY_ARGS(getResponseData);
+HTTP_BEGIN_ARGS(getResponseHeader, 0)
+ HTTP_ARG_VAL(name, 0)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(getResponseCookies, 0)
+ HTTP_ARG_VAL(flags, 0)
+ HTTP_ARG_VAL(allowed_extras, 0)
+HTTP_END_ARGS;
+
+HTTP_EMPTY_ARGS(getResponseBody);
+HTTP_EMPTY_ARGS(getResponseCode);
+HTTP_EMPTY_ARGS(getResponseStatus);
+HTTP_BEGIN_ARGS(getResponseInfo, 0)
+ HTTP_ARG_VAL(name, 0)
+HTTP_END_ARGS;
+
+HTTP_EMPTY_ARGS(getResponseMessage);
+HTTP_EMPTY_ARGS(getRawResponseMessage);
+HTTP_EMPTY_ARGS(getRequestMessage);
+HTTP_EMPTY_ARGS(getRawRequestMessage);
+HTTP_EMPTY_ARGS(getHistory);
+HTTP_EMPTY_ARGS(clearHistory);
+HTTP_EMPTY_ARGS(send);
+
+HTTP_BEGIN_ARGS(get, 1)
+ HTTP_ARG_VAL(url, 0)
+ HTTP_ARG_VAL(options, 0)
+ HTTP_ARG_VAL(info, 1)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(head, 1)
+ HTTP_ARG_VAL(url, 0)
+ HTTP_ARG_VAL(options, 0)
+ HTTP_ARG_VAL(info, 1)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(postData, 2)
+ HTTP_ARG_VAL(url, 0)
+ HTTP_ARG_VAL(data, 0)
+ HTTP_ARG_VAL(options, 0)
+ HTTP_ARG_VAL(info, 1)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(postFields, 2)
+ HTTP_ARG_VAL(url, 0)
+ HTTP_ARG_VAL(data, 0)
+ HTTP_ARG_VAL(options, 0)
+ HTTP_ARG_VAL(info, 1)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(putData, 2)
+ HTTP_ARG_VAL(url, 0)
+ HTTP_ARG_VAL(data, 0)
+ HTTP_ARG_VAL(options, 0)
+ HTTP_ARG_VAL(info, 1)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(putFile, 2)
+ HTTP_ARG_VAL(url, 0)
+ HTTP_ARG_VAL(file, 0)
+ HTTP_ARG_VAL(options, 0)
+ HTTP_ARG_VAL(info, 1)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(putStream, 2)
+ HTTP_ARG_VAL(url, 0)
+ HTTP_ARG_VAL(stream, 0)
+ HTTP_ARG_VAL(options, 0)
+ HTTP_ARG_VAL(info, 1)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(methodRegister, 1)
+ HTTP_ARG_VAL(method_name, 0)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(methodUnregister, 1)
+ HTTP_ARG_VAL(method, 0)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(methodName, 1)
+ HTTP_ARG_VAL(method_id, 0)
+HTTP_END_ARGS;
+
+HTTP_BEGIN_ARGS(methodExists, 1)
+ HTTP_ARG_VAL(method, 0)
+HTTP_END_ARGS;
+
+#ifdef HAVE_CURL_FORMGET
+HTTP_BEGIN_ARGS(encodeBody, 2)
+ HTTP_ARG_VAL(fields, 0)
+ HTTP_ARG_VAL(files, 0)
+HTTP_END_ARGS;
+#endif