X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_message_object.c;h=32a0e325fe4d72023cd1edd0bf592ddb39873294;hb=b23b4edaebd71ff76579b97f3ee353f43e83bd25;hp=235ffc4690cd7b1c89327052937e361410c7ec91;hpb=6ecdeac874ee8b45ffa114faa9d1da4850e0a42e;p=m6w6%2Fext-http diff --git a/http_message_object.c b/http_message_object.c index 235ffc4..32a0e32 100644 --- a/http_message_object.c +++ b/http_message_object.c @@ -32,6 +32,7 @@ #include "php_http_request_method_api.h" #include "php_http_request_api.h" #include "php_http_request_object.h" +#include "php_http_headers_api.h" #if defined(HTTP_HAVE_SPL) && !defined(WONKY) /* SPL doesn't install its headers */ @@ -51,6 +52,11 @@ HTTP_BEGIN_ARGS(factory, 0) HTTP_ARG_VAL(class_name, 0) HTTP_END_ARGS; +HTTP_BEGIN_ARGS(fromEnv, 1) + HTTP_ARG_VAL(type, 0) + HTTP_ARG_VAL(class_name, 0) +HTTP_END_ARGS; + HTTP_EMPTY_ARGS(getBody); HTTP_BEGIN_ARGS(setBody, 1) HTTP_ARG_VAL(body, 0) @@ -185,6 +191,7 @@ zend_function_entry http_message_object_fe[] = { HTTP_MESSAGE_ME(factory, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) ZEND_MALIAS(HttpMessage, fromString, factory, HTTP_ARGS(HttpMessage, factory), ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + HTTP_MESSAGE_ME(fromEnv, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) HTTP_MESSAGE_ME(detach, ZEND_ACC_PUBLIC) HTTP_MESSAGE_ME(prepend, ZEND_ACC_PUBLIC) @@ -735,6 +742,30 @@ PHP_METHOD(HttpMessage, factory) } /* }}} */ +/* {{{ proto static HttpMessage HttpMessage::fromEnv(int type[, string class_name = "HttpMessage"]) + Create a new HttpMessage object from environment representing either current request or response */ +PHP_METHOD(HttpMessage, fromEnv) +{ + char *cn = NULL; + int cl = 0; + long type; + http_message_object *obj = NULL; + zend_object_value ov; + + RETVAL_NULL(); + SET_EH_THROW_HTTP(); + if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|s", &type, &cn, &cl)) { + if (SUCCESS == http_object_new(&ov, cn, cl, _http_message_object_new_ex, http_message_object_ce, http_message_init_env(NULL, type), &obj)) { + RETVAL_OBJVAL(ov, 0); + } + if (obj && !obj->message) { + obj->message = http_message_new(); + } + } + SET_EH_NORMAL(); +} +/* }}} */ + /* {{{ proto string HttpMessage::getBody() Get the body of the parsed HttpMessage. */ PHP_METHOD(HttpMessage, getBody)