projects
/
m6w6
/
ext-http
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
- use custom error function
[m6w6/ext-http]
/
http_functions.c
diff --git
a/http_functions.c
b/http_functions.c
index 05f6b7ee14a7bed0ee15a8bfedcfb3450b0629d9..96f327788c081a0e4aac36ed8ee2103d09cf61bc 100644
(file)
--- a/
http_functions.c
+++ b/
http_functions.c
@@
-21,21
+21,28
@@
#include "php.h"
#include "php_ini.h"
#include "php.h"
#include "php_ini.h"
-#include "snprintf.h"
#include "ext/standard/info.h"
#include "ext/session/php_session.h"
#include "ext/standard/php_string.h"
#include "SAPI.h"
#include "ext/standard/info.h"
#include "ext/session/php_session.h"
#include "ext/standard/php_string.h"
#include "SAPI.h"
+#include "phpstr/phpstr.h"
+
#include "php_http.h"
#include "php_http.h"
+#include "php_http_std_defs.h"
#include "php_http_api.h"
#include "php_http_api.h"
+#include "php_http_auth_api.h"
#include "php_http_curl_api.h"
#include "php_http_curl_api.h"
-#include "php_http_std_defs.h"
-
-#include "phpstr/phpstr.h"
+#include "php_http_cache_api.h"
+#include "php_http_curl_api.h"
+#include "php_http_date_api.h"
+#include "php_http_headers_api.h"
+#include "php_http_message_api.h"
+#include "php_http_send_api.h"
+#include "php_http_url_api.h"
-ZEND_
DECLARE
_MODULE_GLOBALS(http)
+ZEND_
EXTERN
_MODULE_GLOBALS(http)
/* {{{ proto string http_date([int timestamp])
*
/* {{{ proto string http_date([int timestamp])
*
@@
-196,7
+203,7
@@
PHP_FUNCTION(http_send_status)
RETURN_FALSE;
}
if (status < 100 || status > 510) {
RETURN_FALSE;
}
if (status < 100 || status > 510) {
-
php_error_docref(NULL TSRMLS_CC, E_WARNING
, "Invalid HTTP status code (100-510): %d", status);
+
http_error_ex(E_WARNING, HTTP_E_HEADER
, "Invalid HTTP status code (100-510): %d", status);
RETURN_FALSE;
}
RETURN_FALSE;
}
@@
-403,7
+410,7
@@
PHP_FUNCTION(ob_httpetaghandler)
if (mode & PHP_OUTPUT_HANDLER_START) {
if (HTTP_G(etag_started)) {
if (mode & PHP_OUTPUT_HANDLER_START) {
if (HTTP_G(etag_started)) {
-
php_error_docref(NULL TSRMLS_CC, E_WARNING
, "ob_httpetaghandler can only be used once");
+
http_error(E_WARNING, HTTP_E_OBUFFER
, "ob_httpetaghandler can only be used once");
RETURN_STRINGL(data, data_len, 1);
}
http_send_header("Cache-Control: " HTTP_DEFAULT_CACHECONTROL);
RETURN_STRINGL(data, data_len, 1);
}
http_send_header("Cache-Control: " HTTP_DEFAULT_CACHECONTROL);
@@
-411,7
+418,7
@@
PHP_FUNCTION(ob_httpetaghandler)
}
if (OG(ob_nesting_level) > 1) {
}
if (OG(ob_nesting_level) > 1) {
-
php_error_docref(NULL TSRMLS_CC, E_WARNING
, "ob_httpetaghandler must be started prior to other output buffers");
+
http_error(E_WARNING, HTTP_E_OBUFFER
, "ob_httpetaghandler must be started prior to other output buffers");
RETURN_STRINGL(data, data_len, 1);
}
RETURN_STRINGL(data, data_len, 1);
}
@@
-455,7
+462,7
@@
PHP_FUNCTION(http_redirect)
array_init(params);
}
if (add_assoc_string(params, PS(session_name), PS(id), 1) != SUCCESS) {
array_init(params);
}
if (add_assoc_string(params, PS(session_name), PS(id), 1) != SUCCESS) {
-
php_error_docref(NULL TSRMLS_CC, E_WARNING
, "Could not append session information");
+
http_error(E_WARNING, HTTP_E_ENCODE
, "Could not append session information");
}
}
}
}
@@
-580,7
+587,6
@@
PHP_FUNCTION(http_chunked_decode)
* 0 => array(
* 'Status' => '200 Ok',
* 'Content-Type' => 'text/plain',
* 0 => array(
* 'Status' => '200 Ok',
* 'Content-Type' => 'text/plain',
-
* 'Content-Language' => 'en-US'
* ),
* 1 => "Hello World!"
* 'Content-Language' => 'en-US'
* ),
* 1 => "Hello World!"
@@
-603,7
+609,7
@@
PHP_FUNCTION(http_split_response)
array_init(zheaders);
if (SUCCESS != http_split_response(zresponse, zheaders, zbody)) {
array_init(zheaders);
if (SUCCESS != http_split_response(zresponse, zheaders, zbody)) {
-
php_error_docref(NULL TSRMLS_CC, E_WARNING
, "Could not parse HTTP response");
+
http_error(E_WARNING, HTTP_E_PARSE
, "Could not parse HTTP response");
RETURN_FALSE;
}
RETURN_FALSE;
}
@@
-631,7
+637,7
@@
PHP_FUNCTION(http_parse_headers)
header_len = rnrn - header + 2;
}
if (SUCCESS != http_parse_headers(header, header_len, return_value)) {
header_len = rnrn - header + 2;
}
if (SUCCESS != http_parse_headers(header, header_len, return_value)) {
-
php_error_docref(NULL TSRMLS_CC, E_WARNING
, "Could not parse HTTP headers");
+
http_error(E_WARNING, HTTP_E_PARSE
, "Could not parse HTTP headers");
zval_dtor(return_value);
RETURN_FALSE;
}
zval_dtor(return_value);
RETURN_FALSE;
}
@@
-724,10
+730,10
@@
PHP_FUNCTION(http_get_request_headers)
*/
PHP_FUNCTION(http_get)
{
*/
PHP_FUNCTION(http_get)
{
- char *URL, *data = NULL;
- size_t data_len = 0;
- int URL_len;
zval *options = NULL, *info = NULL;
zval *options = NULL, *info = NULL;
+ char *URL;
+ int URL_len;
+ phpstr response;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|a/!z", &URL, &URL_len, &options, &info) != SUCCESS) {
RETURN_FALSE;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|a/!z", &URL, &URL_len, &options, &info) != SUCCESS) {
RETURN_FALSE;
@@
-738,8
+744,9
@@
PHP_FUNCTION(http_get)
array_init(info);
}
array_init(info);
}
- if (SUCCESS == http_get(URL, HASH_ORNULL(options), HASH_ORNULL(info), &data, &data_len)) {
- RETURN_STRINGL(data, data_len, 0);
+ phpstr_init_ex(&response, HTTP_CURLBUF_SIZE, 0);
+ if (SUCCESS == http_get(URL, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) {
+ RETURN_PHPSTR_VAL(response);
} else {
RETURN_FALSE;
}
} else {
RETURN_FALSE;
}
@@
-754,10
+761,10
@@
PHP_FUNCTION(http_get)
*/
PHP_FUNCTION(http_head)
{
*/
PHP_FUNCTION(http_head)
{
- char *URL, *data = NULL;
- size_t data_len = 0;
- int URL_len;
zval *options = NULL, *info = NULL;
zval *options = NULL, *info = NULL;
+ char *URL;
+ int URL_len;
+ phpstr response;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|a/!z", &URL, &URL_len, &options, &info) != SUCCESS) {
RETURN_FALSE;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|a/!z", &URL, &URL_len, &options, &info) != SUCCESS) {
RETURN_FALSE;
@@
-768,8
+775,9
@@
PHP_FUNCTION(http_head)
array_init(info);
}
array_init(info);
}
- if (SUCCESS == http_head(URL, HASH_ORNULL(options), HASH_ORNULL(info), &data, &data_len)) {
- RETURN_STRINGL(data, data_len, 0);
+ phpstr_init_ex(&response, HTTP_CURLBUF_SIZE, 0);
+ if (SUCCESS == http_head(URL, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) {
+ RETURN_PHPSTR_VAL(response);
} else {
RETURN_FALSE;
}
} else {
RETURN_FALSE;
}
@@
-784,10
+792,10
@@
PHP_FUNCTION(http_head)
*/
PHP_FUNCTION(http_post_data)
{
*/
PHP_FUNCTION(http_post_data)
{
- char *URL, *postdata, *data = NULL;
- size_t data_len = 0;
- int postdata_len, URL_len;
zval *options = NULL, *info = NULL;
zval *options = NULL, *info = NULL;
+ char *URL, *postdata;
+ int postdata_len, URL_len;
+ phpstr response;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|a/!z", &URL, &URL_len, &postdata, &postdata_len, &options, &info) != SUCCESS) {
RETURN_FALSE;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|a/!z", &URL, &URL_len, &postdata, &postdata_len, &options, &info) != SUCCESS) {
RETURN_FALSE;
@@
-798,8
+806,9
@@
PHP_FUNCTION(http_post_data)
array_init(info);
}
array_init(info);
}
- if (SUCCESS == http_post_data(URL, postdata, (size_t) postdata_len, HASH_ORNULL(options), HASH_ORNULL(info), &data, &data_len)) {
- RETURN_STRINGL(data, data_len, 0);
+ phpstr_init_ex(&response, HTTP_CURLBUF_SIZE, 0);
+ if (SUCCESS == http_post_data(URL, postdata, (size_t) postdata_len, options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) {
+ RETURN_PHPSTR_VAL(response);
} else {
RETURN_FALSE;
}
} else {
RETURN_FALSE;
}
@@
-814,10
+823,10
@@
PHP_FUNCTION(http_post_data)
*/
PHP_FUNCTION(http_post_array)
{
*/
PHP_FUNCTION(http_post_array)
{
- char *URL, *data = NULL;
- size_t data_len = 0;
- int URL_len;
zval *options = NULL, *info = NULL, *postdata;
zval *options = NULL, *info = NULL, *postdata;
+ char *URL;
+ int URL_len;
+ phpstr response;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sa|a/!z", &URL, &URL_len, &postdata, &options, &info) != SUCCESS) {
RETURN_FALSE;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sa|a/!z", &URL, &URL_len, &postdata, &options, &info) != SUCCESS) {
RETURN_FALSE;
@@
-828,8
+837,9
@@
PHP_FUNCTION(http_post_array)
array_init(info);
}
array_init(info);
}
- if (SUCCESS == http_post_array(URL, Z_ARRVAL_P(postdata), HASH_ORNULL(options), HASH_ORNULL(info), &data, &data_len)) {
- RETURN_STRINGL(data, data_len, 0);
+ phpstr_init_ex(&response, HTTP_CURLBUF_SIZE, 0);
+ if (SUCCESS == http_post_array(URL, Z_ARRVAL_P(postdata), options ? Z_ARRVAL_P(options) : NULL, info ? Z_ARRVAL_P(info) : NULL, &response)) {
+ RETURN_PHPSTR_VAL(response);
} else {
RETURN_FALSE;
}
} else {
RETURN_FALSE;
}
@@
-952,29
+962,30
@@
PHP_FUNCTION(http_auth_basic_cb)
/* {{{ Sara Golemons http_build_query() */
#ifndef ZEND_ENGINE_2
/* {{{ Sara Golemons http_build_query() */
#ifndef ZEND_ENGINE_2
-/* {{{ proto string http_build_query(mixed formdata [, string prefix])
+/* {{{ proto string http_build_query(mixed formdata [, string prefix
[, string arg_separator]
])
Generates a form-encoded query string from an associative array or object. */
PHP_FUNCTION(http_build_query)
{
zval *formdata;
Generates a form-encoded query string from an associative array or object. */
PHP_FUNCTION(http_build_query)
{
zval *formdata;
- char *prefix = NULL, *arg_sep =
NULL
;
- int prefix_len = 0;
- phpstr *formstr
= phpstr_new()
;
+ char *prefix = NULL, *arg_sep =
INI_STR("arg_separator.output")
;
+ int prefix_len = 0
, arg_sep_len = strlen(arg_sep)
;
+ phpstr *formstr;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|s
", &formdata, &prefix, &prefix
_len) != SUCCESS) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|s
s", &formdata, &prefix, &prefix_len, &arg_sep, &arg_sep
_len) != SUCCESS) {
RETURN_FALSE;
}
if (Z_TYPE_P(formdata) != IS_ARRAY && Z_TYPE_P(formdata) != IS_OBJECT) {
RETURN_FALSE;
}
if (Z_TYPE_P(formdata) != IS_ARRAY && Z_TYPE_P(formdata) != IS_OBJECT) {
-
php_error_docref(NULL TSRMLS_CC, E_WARNING
, "Parameter 1 expected to be Array or Object. Incorrect value given.");
+
http_error(E_WARNING, HTTP_E_PARAM
, "Parameter 1 expected to be Array or Object. Incorrect value given.");
RETURN_FALSE;
}
RETURN_FALSE;
}
- if (!
strlen(arg_sep = INI_STR("arg_separator.output"))
) {
- arg_sep = HTTP_URL_ARGSEP
_DEFAULT
;
+ if (!
arg_sep_len
) {
+ arg_sep = HTTP_URL_ARGSEP;
}
}
- if (SUCCESS != http_urlencode_hash_implementation_ex(HASH_OF(formdata), formstr, arg_sep, prefix, prefix_len, NULL, 0, NULL, 0, (Z_TYPE_P(formdata) == IS_OBJECT ? formdata : NULL) TSRMLS_CC)) {
+ formstr = phpstr_new();
+ if (SUCCESS != http_urlencode_hash_implementation_ex(HASH_OF(formdata), formstr, arg_sep, prefix, prefix_len, NULL, 0, NULL, 0, (Z_TYPE_P(formdata) == IS_OBJECT ? formdata : NULL))) {
phpstr_free(formstr);
RETURN_FALSE;
}
phpstr_free(formstr);
RETURN_FALSE;
}