X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_request_object.c;h=0a56e586679ef18332714f2b787dc5d5e7c08628;hp=711872cb1a3c006667d479bd5c5bb1f5e8736289;hb=31d0ecaa361b6a186391f48d566e9b1de36b1099;hpb=4cd69179bad2a35d9ce2bf182c5bd400475fe7e2 diff --git a/http_request_object.c b/http_request_object.c index 711872c..0a56e58 100644 --- a/http_request_object.c +++ b/http_request_object.c @@ -158,6 +158,7 @@ HTTP_END_ARGS; HTTP_EMPTY_ARGS(getResponseMessage, 1); HTTP_EMPTY_ARGS(getRequestMessage, 1); HTTP_EMPTY_ARGS(getHistory, 1); +HTTP_EMPTY_ARGS(clearHistory, 0); HTTP_EMPTY_ARGS(send, 1); HTTP_BEGIN_ARGS(get, 0, 1) @@ -276,6 +277,7 @@ zend_function_entry http_request_object_fe[] = { HTTP_REQUEST_ME(getResponseMessage, ZEND_ACC_PUBLIC) HTTP_REQUEST_ME(getRequestMessage, ZEND_ACC_PUBLIC) HTTP_REQUEST_ME(getHistory, ZEND_ACC_PUBLIC) + HTTP_REQUEST_ME(clearHistory, ZEND_ACC_PUBLIC) HTTP_REQUEST_ALIAS(get, http_get) HTTP_REQUEST_ALIAS(head, http_head) @@ -296,45 +298,6 @@ static zend_object_handlers http_request_object_handlers; void _http_request_object_init(INIT_FUNC_ARGS) { HTTP_REGISTER_CLASS_EX(HttpRequest, http_request_object, NULL, 0); - - /* HTTP/1.1 */ - HTTP_LONG_CONSTANT("HTTP_GET", HTTP_GET); - HTTP_LONG_CONSTANT("HTTP_HEAD", HTTP_HEAD); - HTTP_LONG_CONSTANT("HTTP_POST", HTTP_POST); - HTTP_LONG_CONSTANT("HTTP_PUT", HTTP_PUT); - HTTP_LONG_CONSTANT("HTTP_DELETE", HTTP_DELETE); - HTTP_LONG_CONSTANT("HTTP_OPTIONS", HTTP_OPTIONS); - HTTP_LONG_CONSTANT("HTTP_TRACE", HTTP_TRACE); - HTTP_LONG_CONSTANT("HTTP_CONNECT", HTTP_CONNECT); - /* WebDAV - RFC 2518 */ - HTTP_LONG_CONSTANT("HTTP_PROPFIND", HTTP_PROPFIND); - HTTP_LONG_CONSTANT("HTTP_PROPPATCH", HTTP_PROPPATCH); - HTTP_LONG_CONSTANT("HTTP_MKCOL", HTTP_MKCOL); - HTTP_LONG_CONSTANT("HTTP_COPY", HTTP_COPY); - HTTP_LONG_CONSTANT("HTTP_MOVE", HTTP_MOVE); - HTTP_LONG_CONSTANT("HTTP_LOCK", HTTP_LOCK); - HTTP_LONG_CONSTANT("HTTP_UNLOCK", HTTP_UNLOCK); - /* WebDAV Versioning - RFC 3253 */ - HTTP_LONG_CONSTANT("HTTP_VERSION_CONTROL", HTTP_VERSION_CONTROL); - HTTP_LONG_CONSTANT("HTTP_REPORT", HTTP_REPORT); - HTTP_LONG_CONSTANT("HTTP_CHECKOUT", HTTP_CHECKOUT); - HTTP_LONG_CONSTANT("HTTP_CHECKIN", HTTP_CHECKIN); - HTTP_LONG_CONSTANT("HTTP_UNCHECKOUT", HTTP_UNCHECKOUT); - HTTP_LONG_CONSTANT("HTTP_MKWORKSPACE", HTTP_MKWORKSPACE); - HTTP_LONG_CONSTANT("HTTP_UPDATE", HTTP_UPDATE); - HTTP_LONG_CONSTANT("HTTP_LABEL", HTTP_LABEL); - HTTP_LONG_CONSTANT("HTTP_MERGE", HTTP_MERGE); - HTTP_LONG_CONSTANT("HTTP_BASELINE_CONTROL", HTTP_BASELINE_CONTROL); - HTTP_LONG_CONSTANT("HTTP_MKACTIVITY", HTTP_MKACTIVITY); - /* WebDAV Access Control - RFC 3744 */ - HTTP_LONG_CONSTANT("HTTP_ACL", HTTP_ACL); - - -# if LIBCURL_VERSION_NUM >= 0x070a05 - HTTP_LONG_CONSTANT("HTTP_AUTH_BASIC", CURLAUTH_BASIC); - HTTP_LONG_CONSTANT("HTTP_AUTH_DIGEST", CURLAUTH_DIGEST); - HTTP_LONG_CONSTANT("HTTP_AUTH_NTLM", CURLAUTH_NTLM); -# endif /* LIBCURL_VERSION_NUM */ } zend_object_value _http_request_object_new(zend_class_entry *ce TSRMLS_DC) @@ -345,7 +308,6 @@ zend_object_value _http_request_object_new(zend_class_entry *ce TSRMLS_DC) o = ecalloc(1, sizeof(http_request_object)); o->zo.ce = ce; o->ch = curl_easy_init(); - o->pool = NULL; phpstr_init(&o->history); phpstr_init(&o->request); @@ -382,6 +344,53 @@ static inline void _http_request_object_declare_default_properties(TSRMLS_D) DCL_PROP(PROTECTED, string, putFile, ""); DCL_PROP(PUBLIC, bool, recordHistory, 1); + +#ifndef WONKY + /* + * Request Method Constants + */ + /* HTTP/1.1 */ + DCL_CONST(long, "METH_GET", HTTP_GET); + DCL_CONST(long, "METH_HEAD", HTTP_HEAD); + DCL_CONST(long, "METH_POST", HTTP_POST); + DCL_CONST(long, "METH_PUT", HTTP_PUT); + DCL_CONST(long, "METH_DELETE", HTTP_DELETE); + DCL_CONST(long, "METH_OPTIONS", HTTP_OPTIONS); + DCL_CONST(long, "METH_TRACE", HTTP_TRACE); + DCL_CONST(long, "METH_CONNECT", HTTP_CONNECT); + /* WebDAV - RFC 2518 */ + DCL_CONST(long, "METH_PROPFIND", HTTP_PROPFIND); + DCL_CONST(long, "METH_PROPPATCH", HTTP_PROPPATCH); + DCL_CONST(long, "METH_MKCOL", HTTP_MKCOL); + DCL_CONST(long, "METH_COPY", HTTP_COPY); + DCL_CONST(long, "METH_MOVE", HTTP_MOVE); + DCL_CONST(long, "METH_LOCK", HTTP_LOCK); + DCL_CONST(long, "METH_UNLOCK", HTTP_UNLOCK); + /* WebDAV Versioning - RFC 3253 */ + DCL_CONST(long, "METH_VERSION_CONTROL", HTTP_VERSION_CONTROL); + DCL_CONST(long, "METH_REPORT", HTTP_REPORT); + DCL_CONST(long, "METH_CHECKOUT", HTTP_CHECKOUT); + DCL_CONST(long, "METH_CHECKIN", HTTP_CHECKIN); + DCL_CONST(long, "METH_UNCHECKOUT", HTTP_UNCHECKOUT); + DCL_CONST(long, "METH_MKWORKSPACE", HTTP_MKWORKSPACE); + DCL_CONST(long, "METH_UPDATE", HTTP_UPDATE); + DCL_CONST(long, "METH_LABEL", HTTP_LABEL); + DCL_CONST(long, "METH_MERGE", HTTP_MERGE); + DCL_CONST(long, "METH_BASELINE_CONTROL", HTTP_BASELINE_CONTROL); + DCL_CONST(long, "METH_MKACTIVITY", HTTP_MKACTIVITY); + /* WebDAV Access Control - RFC 3744 */ + DCL_CONST(long, "METH_ACL", HTTP_ACL); + + /* + * Auth Constants + */ +# if LIBCURL_VERSION_NUM >= 0x070a05 + DCL_CONST(long, "AUTH_BASIC", CURLAUTH_BASIC); + DCL_CONST(long, "AUTH_DIGEST", CURLAUTH_DIGEST); + DCL_CONST(long, "AUTH_NTLM", CURLAUTH_NTLM); + DCL_CONST(long, "AUTH_ANY", CURLAUTH_ANY); +# endif /* LIBCURL_VERSION_NUM */ +#endif /* WONKY */ } void _http_request_object_free(zend_object *object TSRMLS_DC) @@ -1588,6 +1597,10 @@ PHP_METHOD(HttpRequest, getRequestMessage) } /* }}} */ +/* {{{ proto HttpMessage HttpRequest::getHistory() + * + * Get all sent requests and received responses as an HttpMessage object. + */ PHP_METHOD(HttpRequest, getHistory) { NO_ARGS; @@ -1603,6 +1616,20 @@ PHP_METHOD(HttpRequest, getHistory) SET_EH_NORMAL(); } } +/* }}} */ + +/* {{{ proto void HttpRequest::clearHistory() + * + * Clear the history. + */ +PHP_METHOD(HttpRequest, clearHistory) +{ + NO_ARGS { + getObject(http_request_object, obj); + phpstr_dtor(&obj->history); + } +} +/* }}} */ /* {{{ proto HttpMessage HttpRequest::send() *