+/* {{{ HttpMessage */
+
+/* {{{ 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;
+ getObject(http_message_object, obj);
+
+ 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::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);
+}
+/* }}} */
+
+/* }}} */
+