#include "php_http_message_object.h"
#include "php_http_response_object.h"
#include "php_http_request_object.h"
+#include "php_http_exception_object.h"
#ifdef ZEND_ENGINE_2
zend_bool do_cache = 0, do_gzip = 0;
getObject(http_response_object, obj);
- if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|bb", &do_cache, &do_gzip)) {
- // throw exception
- return;
+ SET_EH_THROW_HTTP();
+ if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|bb", &do_cache, &do_gzip)) {
+ UPD_PROP(obj, long, cache, do_cache);
+ UPD_PROP(obj, long, gzip, do_gzip);
}
-
- UPD_PROP(obj, long, cache, do_cache);
- UPD_PROP(obj, long, gzip, do_gzip);
+ SET_EH_NORMAL();
}
/* }}} */
/* {{{ 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);
}
/* }}} */
long meth = -1;
getObject(http_request_object, obj);
- if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sl", &URL, &URL_len, &meth)) {
- return;
- }
+ SET_EH_THROW_HTTP();
+ if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sl", &URL, &URL_len, &meth)) {
+ INIT_PARR(obj, options);
+ INIT_PARR(obj, responseInfo);
+ INIT_PARR(obj, responseData);
+ INIT_PARR(obj, postData);
+ INIT_PARR(obj, postFiles);
- INIT_PARR(obj, options);
- INIT_PARR(obj, responseInfo);
- INIT_PARR(obj, responseData);
- INIT_PARR(obj, postData);
- INIT_PARR(obj, postFiles);
-
- if (URL) {
- UPD_PROP(obj, string, url, URL);
- }
- if (meth > -1) {
- UPD_PROP(obj, long, method, meth);
+ if (URL) {
+ UPD_PROP(obj, string, url, URL);
+ }
+ if (meth > -1) {
+ UPD_PROP(obj, long, method, meth);
+ }
}
+ SET_EH_NORMAL();
}
/* }}} */
getObject(http_request_object, obj);
NO_ARGS;
+
+ SET_EH_THROW_HTTP();
if ((!obj->ch) && (!(obj->ch = curl_easy_init()))) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not initilaize cURL");
efree(request_uri);
/* final data handling */
- if (status != SUCCESS) {
- RETURN_FALSE;
- } else {
+ if (status == SUCCESS) {
char *body = NULL;
size_t body_len = 0;
zval *zheaders;
RETURN_TRUE;
}
- /* */
+
+ SET_EH_NORMAL();
+ RETURN_SUCCESS(status);
}
/* }}} */
/* }}} */