* Use with http_send() API.
*
* Example:
- * <code>
+ * <pre>
* <?php
* // ~ 20 kbyte/s
* # http_throttle(1, 20000);
* # http_throttle(0.1, 2000);
* http_send_file('document.pdf');
* ?>
- * </code>
+ * </pre>
*/
PHP_FUNCTION(http_throttle)
{
*/
PHP_FUNCTION(http_split_response)
{
- zval *zresponse, *zbody, *zheaders;
+ char *response, *body;
+ int response_len;
+ size_t body_len;
+ zval *zheaders;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &zresponse) != SUCCESS) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &response, &response_len) != SUCCESS) {
RETURN_FALSE;
}
- convert_to_string(zresponse);
-
- MAKE_STD_ZVAL(zbody);
MAKE_STD_ZVAL(zheaders);
array_init(zheaders);
- if (SUCCESS != http_split_response(zresponse, zheaders, zbody)) {
+ if (SUCCESS != http_split_response(response, response_len, Z_ARRVAL_P(zheaders), &body, &body_len)) {
http_error(E_WARNING, HTTP_E_PARSE, "Could not parse HTTP response");
RETURN_FALSE;
}
array_init(return_value);
add_index_zval(return_value, 0, zheaders);
- add_index_zval(return_value, 1, zbody);
+ add_index_stringl(return_value, 1, body, body_len, 0);
}
/* }}} */
/* {{{ proto array http_get_request_headers(void)
*
+ * Get a list of incoming HTTP headers.
*/
PHP_FUNCTION(http_get_request_headers)
{
}
/* }}} */
+/* {{{ proto bool http_match_request_header(string header, string value[, bool match_case = false])
+ *
+ * Match an incoming HTTP header.
+ */
+PHP_FUNCTION(http_match_request_header)
+{
+ char *header, *value;
+ int header_len, value_len;
+ zend_bool match_case = 0, result = 0;
+
+ if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|b", &header, &header_len, &value, &value_len, &match_case)) {
+ RETURN_FALSE;
+ }
+
+ RETURN_BOOL(http_match_request_header_ex(header, value, match_case));
+}
+/* }}} */
+
/* {{{ HAVE_CURL */
#ifdef HTTP_HAVE_CURL
} else {
RETVAL_FALSE;
}
- http_request_body_dtor(&body);
}
/* }}} */
/* {{{ proto string http_put_file(string url, string file[, array options[, array &info]])
*
+ * Performs an HTTP PUT request, uploading file.
+ * Returns the HTTP response as string.
+ * See http_get() for a full list of available options.
*/
PHP_FUNCTION(http_put_file)
{
/* {{{ proto string http_put_stream(string url, resource stream[, array options[, array &info]])
*
+ * Performs an HTTP PUT request, uploading stream.
+ * Returns the HTTP response as string.
+ * See http_get() for a full list of available options.
*/
PHP_FUNCTION(http_put_stream)
{
}
/* }}} */
-/* {{{ proto bool http_request()
- */
-/* }}} */
-
/* {{{ proto long http_request_method_register(string method)
*
+ * Register a custom request method.
*/
PHP_FUNCTION(http_request_method_register)
{
/* {{{ proto bool http_request_method_unregister(mixed method)
*
+ * Unregister a previously registered custom request method.
*/
PHP_FUNCTION(http_request_method_unregister)
{
zval *method;
- zend_bool numeric;
- unsigned long existing;
if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z/", &method)) {
RETURN_FALSE;
/* {{{ proto long http_request_method_exists(mixed method)
*
+ * Check if a request method is registered (or available by default).
*/
PHP_FUNCTION(http_request_method_exists)
{
/* {{{ proto string http_request_method_name(long method)
*
+ * Get the literal string representation of a standard or registered request method.
*/
PHP_FUNCTION(http_request_method_name)
{
realm = "Restricted";
}
- if (SUCCESS != http_auth_credentials(&suser, &spass)) {
- http_auth_header("Basic", realm);
+ if (SUCCESS != http_auth_basic_credentials(&suser, &spass)) {
+ http_auth_basic_header(realm);
RETURN_FALSE;
}
if (strcasecmp(suser, user)) {
- http_auth_header("Basic", realm);
+ http_auth_basic_header(realm);
RETURN_FALSE;
}
if (strcmp(spass, pass)) {
- http_auth_header("Basic", realm);
+ http_auth_basic_header(realm);
RETURN_FALSE;
}
realm = "Restricted";
}
- if (SUCCESS != http_auth_credentials(&user, &pass)) {
- http_auth_header("Basic", realm);
+ if (SUCCESS != http_auth_basic_credentials(&user, &pass)) {
+ http_auth_basic_header(realm);
RETURN_FALSE;
}
{
efree(zparams[1]);
if (!result) {
- http_auth_header("Basic", realm);
+ http_auth_basic_header(realm);
}
RETURN_BOOL(result);