X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_methods.c;h=a6e2f2007ff3fc0453f9fc6b455c8161c2661d57;hp=6812d7d795af9838a4ab7959f88bb93962df924d;hb=80fd11fc5b72c8fadea499aec6e617d415334c2d;hpb=f72e5643816252292977376ff509c62f51913c97 diff --git a/http_methods.c b/http_methods.c index 6812d7d..a6e2f20 100644 --- a/http_methods.c +++ b/http_methods.c @@ -523,31 +523,76 @@ PHP_METHOD(HttpResponse, send) /* {{{ HttpMessage */ -/* {{{ void HttpMessage::__construct([string raw_message]) */ +/* {{{ void HttpMessage::__construct([string raw_message]) + * + * Instantiate a new HttpMessage object based on the optionally provided + * raw message. An HTTP Message can be either a response or a request. + */ PHP_METHOD(HttpMessage, __construct) { zval *message = NULL; int message_len; getObject(http_message_object, obj); - http_message *msg = obj->message; if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|z/", &message)) { return; } if (message) { + convert_to_string(message); SET_PROP(obj, raw, message); } } /* }}} */ -/* {{{ void HttpMessage::__destruct() */ -PHP_METHOD(HttpMessage, __destruct) +/* {{{ void HttpMessage::setRaw(string raw_message) + * + * Parse a new raw message. + */ +PHP_METHOD(HttpMessage, setRaw) { + zval *message; getObject(http_message_object, obj); + + if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z/", &message)) { + return; + } + convert_to_string(message); + SET_PROP(obj, raw, message); +} +/* }}} */ + +/* {{{ string HttpMessage::getBody() + * + * Get the body of the parsed Message. + */ +PHP_METHOD(HttpMessage, getBody) +{ + zval *body; + getObject(http_message_object, obj); + NO_ARGS; + body = GET_PROP(obj, body); + RETURN_STRINGL(Z_STRVAL_P(body), Z_STRLEN_P(body), 1); +} +/* }}} */ + +/* {{{ array HttpMessage::getHeaders() + * + * Get Message Headers. + */ +PHP_METHOD(HttpMessage, getHeaders) +{ + zval *headers; + getObject(http_message_object, obj); + + NO_ARGS; + + headers = GET_PROP(obj, headers); + array_init(return_value); + array_copy(headers, return_value); } /* }}} */