[prev in list] [next in list] [prev in thread] [next in thread]
List: pecl-cvs
Subject: [PECL-CVS] =?utf-8?q?svn:_/pecl/http/branches/DEV=5F2/_config9.m4_php=5Fhttp=5Fenv.c_php=5Fhttp=5Fen
From: Michael_Wallner <mike () php ! net>
Date: 2012-11-07 8:52:35
Message-ID: svn-mike-1352278355-328267-1482467818 () svn ! php ! net
[Download RAW message or body]
mike Wed, 07 Nov 2012 08:52:35 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=328267
Log:
- add http\Env::getResponseStatusForAllCodes()
- merge message headers
Changed paths:
U pecl/http/branches/DEV_2/config9.m4
U pecl/http/branches/DEV_2/php_http_env.c
U pecl/http/branches/DEV_2/php_http_env.h
U pecl/http/branches/DEV_2/php_http_message.c
U pecl/http/branches/DEV_2/php_http_strlist.c
A pecl/http/branches/DEV_2/tests/envresponsecodes.phpt
U pecl/http/branches/DEV_2/tests/message005.phpt
U pecl/http/branches/DEV_2/tests/propertyproxy001.phpt
["svn-diffs-328267.txt" (text/x-diff)]
Modified: pecl/http/branches/DEV_2/config9.m4
===================================================================
--- pecl/http/branches/DEV_2/config9.m4 2012-11-06 21:10:11 UTC (rev 328266)
+++ pecl/http/branches/DEV_2/config9.m4 2012-11-07 08:52:35 UTC (rev 328267)
@@ -341,7 +341,7 @@
EVENT_VER="`$EGREP _EVENT_VERSION $EVENT_DIR/include/event2/event.h | $AWK \
'{print $3}'`" AC_DEFINE([PHP_HTTP_HAVE_EVENT2], [1], [ ])
else
- AC_DEFFINE([PHP_HTTP_HAVE_EVENT2], [0], [ ])
+ AC_DEFINE([PHP_HTTP_HAVE_EVENT2], [0], [ ])
if test -f "$EVENT_DIR/include/evhttp.h" && test -f \
"$EVENT_DIR/include/evdns.h"; then if test -f "$EVENT_DIR/include/evrpc.h"; then
EVENT_VER="1.4 or greater"
Modified: pecl/http/branches/DEV_2/php_http_env.c
===================================================================
--- pecl/http/branches/DEV_2/php_http_env.c 2012-11-06 21:10:11 UTC (rev 328266)
+++ pecl/http/branches/DEV_2/php_http_env.c 2012-11-07 08:52:35 UTC (rev 328267)
@@ -663,6 +663,8 @@
PHP_HTTP_ARG_VAL(code, 0)
PHP_HTTP_END_ARGS;
+PHP_HTTP_EMPTY_ARGS(getResponseStatusForAllCodes);
+
PHP_HTTP_BEGIN_ARGS(getResponseHeader, 0)
PHP_HTTP_ARG_VAL(header_name, 0)
PHP_HTTP_END_ARGS;
@@ -726,6 +728,7 @@
PHP_HTTP_ENV_ME(getRequestBody)
PHP_HTTP_ENV_ME(getResponseStatusForCode)
+ PHP_HTTP_ENV_ME(getResponseStatusForAllCodes)
PHP_HTTP_ENV_ME(getResponseHeader)
PHP_HTTP_ENV_ME(getResponseCode)
@@ -793,6 +796,25 @@
RETURN_FALSE;
}
+PHP_METHOD(HttpEnv, getResponseStatusForAllCodes)
+{
+ const char *s;
+ unsigned c;
+ php_http_strlist_iterator_t i;
+
+ if (SUCCESS != zend_parse_parameters_none()) {
+ RETURN_FALSE;
+ }
+
+ array_init(return_value);
+ for ( php_http_strlist_iterator_init(&i, php_http_env_response_status, 100);
+ *(s = php_http_strlist_iterator_this(&i, &c));
+ php_http_strlist_iterator_next(&i)
+ ) {
+ add_index_string(return_value, c, s, 1);
+ }
+}
+
PHP_METHOD(HttpEnv, getResponseHeader)
{
char *header_name_str = NULL;
Modified: pecl/http/branches/DEV_2/php_http_env.h
===================================================================
--- pecl/http/branches/DEV_2/php_http_env.h 2012-11-06 21:10:11 UTC (rev 328266)
+++ pecl/http/branches/DEV_2/php_http_env.h 2012-11-07 08:52:35 UTC (rev 328267)
@@ -75,6 +75,7 @@
PHP_METHOD(HttpEnv, getRequestHeader);
PHP_METHOD(HttpEnv, getRequestBody);
PHP_METHOD(HttpEnv, getResponseStatusForCode);
+PHP_METHOD(HttpEnv, getResponseStatusForAllCodes);
PHP_METHOD(HttpEnv, getResponseHeader);
PHP_METHOD(HttpEnv, getResponseCode);
PHP_METHOD(HttpEnv, setResponseHeader);
Modified: pecl/http/branches/DEV_2/php_http_message.c
===================================================================
--- pecl/http/branches/DEV_2/php_http_message.c 2012-11-06 21:10:11 UTC (rev 328266)
+++ pecl/http/branches/DEV_2/php_http_message.c 2012-11-07 08:52:35 UTC (rev 328267)
@@ -12,6 +12,9 @@
#include "php_http_api.h"
+static zval *message_header_strval(zval **header TSRMLS_DC);
+static void message_headers(php_http_message_t *msg, php_http_buffer_t *str);
+
PHP_HTTP_API zend_bool php_http_message_info_callback(php_http_message_t **message, \
HashTable **headers, php_http_info_t *info TSRMLS_DC) {
php_http_message_t *old = *message;
@@ -147,21 +150,9 @@
if (SUCCESS == zend_symtable_find(&msg->hdrs, key, key_len + 1, (void *) &header)) \
{ if (join && Z_TYPE_PP(header) == IS_ARRAY) {
- zval *header_str, **val;
- HashPosition pos;
- php_http_buffer_t str;
TSRMLS_FETCH_FROM_CTX(msg->ts);
- php_http_buffer_init(&str);
- MAKE_STD_ZVAL(header_str);
- FOREACH_VAL(pos, *header, val) {
- zval *strval = php_http_ztyp(IS_STRING, *val);
- php_http_buffer_appendf(&str, PHP_HTTP_BUFFER_LEN(&str) ? ", %s":"%s", \
Z_STRVAL_P(strval));
- zval_ptr_dtor(&strval);
- }
- php_http_buffer_fix(&str);
- ZVAL_STRINGL(header_str, PHP_HTTP_BUFFER_VAL(&str), PHP_HTTP_BUFFER_LEN(&str), \
0);
- ret = header_str;
+ ret = message_header_strval(header TSRMLS_CC);
} else {
Z_ADDREF_PP(header);
ret = *header;
@@ -307,8 +298,38 @@
}
}
}
-static inline void message_headers(php_http_message_t *msg, php_http_buffer_t *str)
+
+static zval *message_header_strval(zval **header TSRMLS_DC)
{
+ zval *ret;
+
+ if (Z_TYPE_PP(header) == IS_BOOL) {
+ MAKE_STD_ZVAL(ret);
+ ZVAL_STRING(ret, Z_BVAL_PP(header) ? "true" : "false", 1);
+ } else if (Z_TYPE_PP(header) == IS_ARRAY) {
+ zval **val;
+ HashPosition pos;
+ php_http_buffer_t str;
+
+ php_http_buffer_init(&str);
+ MAKE_STD_ZVAL(ret);
+ FOREACH_VAL(pos, *header, val) {
+ zval *strval = message_header_strval(val TSRMLS_CC);
+
+ php_http_buffer_appendf(&str, PHP_HTTP_BUFFER_LEN(&str) ? ", %s":"%s", \
Z_STRVAL_P(strval)); + zval_ptr_dtor(&strval);
+ }
+ php_http_buffer_fix(&str);
+ ZVAL_STRINGL(ret, PHP_HTTP_BUFFER_VAL(&str), PHP_HTTP_BUFFER_LEN(&str), 0);
+ } else {
+ ret = php_http_zsep(1, IS_STRING, *header);
+ }
+
+ return ret;
+}
+
+static void message_headers(php_http_message_t *msg, php_http_buffer_t *str)
+{
php_http_array_hashkey_t key = php_http_array_hashkey_init(0);
HashPosition pos1;
zval **header;
@@ -331,48 +352,35 @@
FOREACH_HASH_KEYVAL(pos1, &msg->hdrs, key, header) {
if (key.type == HASH_KEY_IS_STRING) {
- HashPosition pos2;
- zval **single_header;
+ if (key.len == sizeof("Set-Cookie") && !strcasecmp(key.str, "Set-Cookie") && \
Z_TYPE_PP(header) == IS_ARRAY) { + HashPosition pos2;
+ zval **single_header;
- switch (Z_TYPE_PP(header)) {
- case IS_BOOL:
- php_http_buffer_appendf(str, "%s: %s" PHP_HTTP_CRLF, key.str, \
Z_BVAL_PP(header)?"true":"false");
- break;
-
- case IS_LONG:
- php_http_buffer_appendf(str, "%s: %ld" PHP_HTTP_CRLF, key.str, \
Z_LVAL_PP(header));
- break;
-
- case IS_DOUBLE:
- php_http_buffer_appendf(str, "%s: %F" PHP_HTTP_CRLF, key.str, \
Z_DVAL_PP(header));
- break;
-
- case IS_STRING:
- if (Z_STRVAL_PP(header)[Z_STRLEN_PP(header)-1] == '\r') fprintf(stderr, \
"DOH!\n");
- php_http_buffer_appendf(str, "%s: %s" PHP_HTTP_CRLF, key.str, \
Z_STRVAL_PP(header));
- break;
+ FOREACH_VAL(pos2, *header, single_header) {
+ if (Z_TYPE_PP(single_header) == IS_ARRAY) {
+ php_http_cookie_list_t *cookie = php_http_cookie_list_from_struct(NULL, \
*single_header TSRMLS_CC);
- case IS_ARRAY:
- FOREACH_VAL(pos2, *header, single_header) {
- switch (Z_TYPE_PP(single_header)) {
- case IS_BOOL:
- php_http_buffer_appendf(str, "%s: %s" PHP_HTTP_CRLF, key.str, \
Z_BVAL_PP(single_header)?"true":"false");
- break;
-
- case IS_LONG:
- php_http_buffer_appendf(str, "%s: %ld" PHP_HTTP_CRLF, key.str, \
Z_LVAL_PP(single_header));
- break;
-
- case IS_DOUBLE:
- php_http_buffer_appendf(str, "%s: %F" PHP_HTTP_CRLF, key.str, \
Z_DVAL_PP(single_header));
- break;
-
- case IS_STRING:
- php_http_buffer_appendf(str, "%s: %s" PHP_HTTP_CRLF, key.str, \
Z_STRVAL_PP(single_header));
- break;
+ if (cookie) {
+ char *buf;
+ size_t len;
+
+ php_http_cookie_list_to_string(cookie, &buf, &len);
+ php_http_buffer_appendf(str, "Set-Cookie: %s" PHP_HTTP_CRLF, buf);
+ php_http_cookie_list_free(&cookie);
+ efree(buf);
}
+ } else {
+ zval *strval = message_header_strval(single_header TSRMLS_CC);
+
+ php_http_buffer_appendf(str, "Set-Cookie: %s" PHP_HTTP_CRLF, \
Z_STRVAL_P(strval)); + zval_ptr_dtor(&strval);
}
- break;
+ }
+ } else {
+ zval *strval = message_header_strval(header TSRMLS_CC);
+
+ php_http_buffer_appendf(str, "%s: %s" PHP_HTTP_CRLF, key.str, \
Z_STRVAL_P(strval)); + zval_ptr_dtor(&strval);
}
}
}
Modified: pecl/http/branches/DEV_2/php_http_strlist.c
===================================================================
--- pecl/http/branches/DEV_2/php_http_strlist.c 2012-11-06 21:10:11 UTC (rev 328266)
+++ pecl/http/branches/DEV_2/php_http_strlist.c 2012-11-07 08:52:35 UTC (rev 328267)
@@ -28,7 +28,7 @@
PHP_HTTP_API const char *php_http_strlist_iterator_this(php_http_strlist_iterator_t \
*iter, unsigned *id) {
if (id) {
- *id = iter->major * iter->factor + iter->minor;
+ *id = (iter->major + 1) * iter->factor + iter->minor;
}
return iter->p;
@@ -46,6 +46,7 @@
if (!*iter->p) {
++iter->p;
++iter->major;
+ iter->minor = 0;
}
}
Added: pecl/http/branches/DEV_2/tests/envresponsecodes.phpt
===================================================================
--- pecl/http/branches/DEV_2/tests/envresponsecodes.phpt (rev \
0)
+++ pecl/http/branches/DEV_2/tests/envresponsecodes.phpt 2012-11-07 08:52:35 UTC (rev \
328267) @@ -0,0 +1,26 @@
+--TEST--
+http\Env response codes
+--SKIPIF--
+<?php include "skipif.inc"; ?>
+--FILE--
+<?php
+echo "Test\n";
+
+var_dump(
+ array_diff_assoc(
+ http\Env::getResponseStatusForAllCodes(),
+ array_filter(
+ array_map(
+ array("http\\Env", "getResponseStatusForCode"),
+ range(0, 600)
+ )
+ )
+ )
+);
+?>
+Done
+--EXPECT--
+Test
+array(0) {
+}
+Done
Modified: pecl/http/branches/DEV_2/tests/message005.phpt
===================================================================
--- pecl/http/branches/DEV_2/tests/message005.phpt 2012-11-06 21:10:11 UTC (rev \
328266)
+++ pecl/http/branches/DEV_2/tests/message005.phpt 2012-11-07 08:52:35 UTC (rev \
328267) @@ -27,8 +27,5 @@
===
UNKNOWN / HTTP/1.1
-Numbers: 1
-Numbers: 2
-Numbers: 3
-Numbers: 4.5%d
+Numbers: 1, 2, 3, 4.5
DONE
Modified: pecl/http/branches/DEV_2/tests/propertyproxy001.phpt
===================================================================
--- pecl/http/branches/DEV_2/tests/propertyproxy001.phpt 2012-11-06 21:10:11 UTC (rev \
328266)
+++ pecl/http/branches/DEV_2/tests/propertyproxy001.phpt 2012-11-07 08:52:35 UTC (rev \
328267) @@ -86,9 +86,7 @@
by1ref: 2
by2ref: 1
byXref: 2
-bynext: 1
-bynext: 2
-bynext: 3
+bynext: 1, 2, 3
DONE
--
PECL CVS Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic