X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http.h;h=b0a0a149d5e74798854485fcb7c29d7ba1f82004;hp=6251c98f6aad1c4189cbafc9d8f84c297050ee26;hb=65e8d26f23e09b824c3009d9263dbb2629f29304;hpb=51f68d1c8028144d2db1e415fdf14afb1442649e diff --git a/php_http.h b/php_http.h index 6251c98..d4b00bb 100644 --- a/php_http.h +++ b/php_http.h @@ -1,16 +1,13 @@ /* - +----------------------------------------------------------------------+ - | PECL :: http | - +----------------------------------------------------------------------+ - | This source file is subject to version 3.0 of the PHP license, that | - | is bundled with this package in the file LICENSE, and is available | - | through the world-wide-web at http://www.php.net/license/3_0.txt. | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Copyright (c) 2004-2005 Michael Wallner | - +----------------------------------------------------------------------+ + +--------------------------------------------------------------------+ + | PECL :: http | + +--------------------------------------------------------------------+ + | Redistribution and use in source and binary forms, with or without | + | modification, are permitted provided that the conditions mentioned | + | in the accompanying LICENSE file are met. | + +--------------------------------------------------------------------+ + | Copyright (c) 2004-2010, Michael Wallner | + +--------------------------------------------------------------------+ */ /* $Id$ */ @@ -18,132 +15,192 @@ #ifndef PHP_EXT_HTTP_H #define PHP_EXT_HTTP_H -#define PHP_EXT_HTTP_VERSION "0.5.0-dev" +#define PHP_HTTP_VERSION "1.7.3" -/* make compile on Win32 */ -#include "php_streams.h" -#include "ext/standard/md5.h" +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# ifndef PHP_WIN32 +# include "php_config.h" +# endif +#endif + +#include "php.h" +#include "missing.h" +#include "php_http_std_defs.h" +#include "phpstr/phpstr.h" + +#ifdef HTTP_WANT_SAPI +# if PHP_API_VERSION > 20041225 +# define HTTP_HAVE_SAPI_RTIME +# endif +# include "SAPI.h" +#endif + +#ifdef HTTP_WANT_NETDB +# ifdef PHP_WIN32 +# define HTTP_HAVE_NETDB +# include +# elif defined(HAVE_NETDB_H) +# define HTTP_HAVE_NETDB +# include +# ifdef HAVE_UNISTD_H +# include +# endif +# endif +#endif + +#if defined(HTTP_WANT_CURL) && defined(HTTP_HAVE_CURL) +# ifdef PHP_WIN32 +# include +# define CURL_STATICLIB +# endif +# include +# define HTTP_CURL_VERSION(x, y, z) (LIBCURL_VERSION_NUM >= (((x)<<16) + ((y)<<8) + (z))) +# +# if defined(HTTP_WANT_EVENT) && defined(HTTP_HAVE_EVENT) +# include +# endif +#endif + +#if defined(HTTP_WANT_MAGIC) && defined(HTTP_HAVE_MAGIC) +# if defined(PHP_WIN32) && !defined(USE_MAGIC_DLL) && !defined(USE_MAGIC_STATIC) +# define USE_MAGIC_STATIC +# endif +# include +#endif + +#if defined(HTTP_WANT_ZLIB) && defined(HTTP_HAVE_ZLIB) +# include +#endif + +#include +#define HTTP_IS_CTYPE(type, c) is##type((int) (unsigned char) (c)) +#define HTTP_TO_CTYPE(type, c) to##type((int) (unsigned char) (c)) extern zend_module_entry http_module_entry; #define phpext_http_ptr &http_module_entry -#ifdef ZTS -# include "TSRM.h" -# define HTTP_G(v) TSRMG(http_globals_id, zend_http_globals *, v) -#else -# define HTTP_G(v) (http_globals.v) -#endif +extern int http_module_number; -#ifndef ZEND_ENGINE_2 -# include "php_http_build_query.h" -#else +ZEND_BEGIN_MODULE_GLOBALS(http) -#ifdef HTTP_HAVE_CURL -typedef struct { - struct { - char *data; - size_t used; - size_t free; - } body; - struct { - char *data; - size_t used; - size_t free; - } hdrs; -} http_curlbuf; - -typedef enum { - HTTP_GET, - HTTP_HEAD, - HTTP_POST, -} http_request_method; + struct _http_globals_etag { + char *mode; + void *ctx; + zend_bool started; + } etag; + + struct _http_globals_log { + char *cache; + char *redirect; + char *not_found; + char *allowed_methods; + char *composite; + } log; + + struct _http_globals_send { + double throttle_delay; + size_t buffer_size; + char *content_type; + char *unquoted_etag; + time_t last_modified; + struct _http_globals_send_deflate { + zend_bool response; + zend_bool start_auto; + long start_flags; + int encoding; + void *stream; + } deflate; + struct _http_globals_send_inflate { + zend_bool start_auto; + long start_flags; + void *stream; + } inflate; + zend_bool not_found_404; + } send; + + struct _http_globals_request { + time_t time; + HashTable *headers; + struct _http_globals_request_methods { + HashTable registered; + char *allowed; + char *custom; + } methods; +#if defined(ZEND_ENGINE_2) && defined(HTTP_HAVE_CURL) + struct _http_globals_request_datashare { + zend_llist handles; + zend_bool cookie; + zend_bool dns; + zend_bool ssl; + zend_bool connect; + } datashare; +#endif +#if defined(ZEND_ENGINE_2) && defined(HTTP_HAVE_EVENT) + struct _http_globals_request_pool { + struct _http_globals_request_pool_event { + void *base; + } event; + } pool; #endif + } request; -PHP_METHOD(HTTPi, date); -PHP_METHOD(HTTPi, absoluteURI); -PHP_METHOD(HTTPi, negotiateLanguage); -PHP_METHOD(HTTPi, negotiateCharset); -PHP_METHOD(HTTPi, redirect); -PHP_METHOD(HTTPi, sendStatus); -PHP_METHOD(HTTPi, sendLastModified); -PHP_METHOD(HTTPi, sendContentType); -PHP_METHOD(HTTPi, sendContentDisposition); -PHP_METHOD(HTTPi, matchModified); -PHP_METHOD(HTTPi, matchEtag); -PHP_METHOD(HTTPi, cacheLastModified); -PHP_METHOD(HTTPi, cacheEtag); -PHP_METHOD(HTTPi, chunkedDecode); -PHP_METHOD(HTTPi, splitResponse); -PHP_METHOD(HTTPi, parseHeaders); -PHP_METHOD(HTTPi, getRequestHeaders); -#ifdef HTTP_HAVE_CURL -PHP_METHOD(HTTPi, get); -PHP_METHOD(HTTPi, head); -PHP_METHOD(HTTPi, postData); -PHP_METHOD(HTTPi, postArray); + struct _http_globals_persistent { + struct _http_globals_persistent_handles { + ulong limit; + struct _http_globals_persistent_handles_ident { + ulong h; + char *s; + size_t l; + } ident; + } handles; + } persistent; + +#ifdef ZEND_ENGINE_2 + zend_bool only_exceptions; #endif -PHP_METHOD(HTTPi, authBasic); -PHP_METHOD(HTTPi, authBasicCallback); - - -PHP_METHOD(HTTPi_Response, __construct);/* -PHP_METHOD(HTTPi_Response, __destruct);*/ -PHP_METHOD(HTTPi_Response, setETag); -PHP_METHOD(HTTPi_Response, getETag); -PHP_METHOD(HTTPi_Response, setContentDisposition); -PHP_METHOD(HTTPi_Response, getContentDisposition); -PHP_METHOD(HTTPi_Response, setContentType); -PHP_METHOD(HTTPi_Response, getContentType); -PHP_METHOD(HTTPi_Response, setCache); -PHP_METHOD(HTTPi_Response, getCache); -PHP_METHOD(HTTPi_Response, setCacheControl); -PHP_METHOD(HTTPi_Response, getCacheControl); -PHP_METHOD(HTTPi_Response, setGzip); -PHP_METHOD(HTTPi_Response, getGzip); -PHP_METHOD(HTTPi_Response, setData); -PHP_METHOD(HTTPi_Response, getData); -PHP_METHOD(HTTPi_Response, setFile); -PHP_METHOD(HTTPi_Response, getFile); -PHP_METHOD(HTTPi_Response, setStream); -PHP_METHOD(HTTPi_Response, getStream); -PHP_METHOD(HTTPi_Response, send); -#ifdef HTTP_HAVE_CURL + zend_bool force_exit; + zend_bool read_post_data; + zval *server_var; -PHP_METHOD(HTTPi_Request, __construct);/* -PHP_METHOD(HTTPi_Request, __destruct);*/ -PHP_METHOD(HTTPi_Request, setOptions); -PHP_METHOD(HTTPi_Request, getOptions); -PHP_METHOD(HTTPi_Request, setMethod); -PHP_METHOD(HTTPi_Request, getMethod); -PHP_METHOD(HTTPi_Request, setURL); -PHP_METHOD(HTTPi_Request, getURL); -PHP_METHOD(HTTPi_Request, setContentType); -PHP_METHOD(HTTPi_Request, getContentType); -PHP_METHOD(HTTPi_Request, setQueryData); -PHP_METHOD(HTTPi_Request, getQueryData); -PHP_METHOD(HTTPi_Request, addQueryData); -PHP_METHOD(HTTPi_Request, unsetQueryData);/* -PHP_METHOD(HTTPi_Request, setPostData); -PHP_METHOD(HTTPi_Request, addPostData); -PHP_METHOD(HTTPi_Request, unsetPostData); -PHP_METHOD(HTTPi_Request, addPostFile);*/ -PHP_METHOD(HTTPi_Request, send); -PHP_METHOD(HTTPi_Request, getResponseData); -PHP_METHOD(HTTPi_Request, getResponseHeaders); -PHP_METHOD(HTTPi_Request, getResponseBody); -PHP_METHOD(HTTPi_Request, getResponseInfo); +ZEND_END_MODULE_GLOBALS(http) -#endif /* HTTP_HAVE_CURL */ +ZEND_EXTERN_MODULE_GLOBALS(http); + +#ifdef ZTS +# include "TSRM.h" +# define HTTP_G ((zend_http_globals *) (*((void ***) tsrm_ls))[TSRM_UNSHUFFLE_RSRC_ID(http_globals_id)]) +#else +# define HTTP_G (&http_globals) +#endif + +#if defined(HAVE_ICONV) && (HTTP_SHARED_DEPS || !defined(COMPILE_DL_ICONV)) +# define HTTP_HAVE_ICONV +#endif -#endif /* ZEND_ENGINE_2 */ +#if defined(HAVE_PHP_SESSION) && (HTTP_SHARED_DEPS || !defined(COMPILE_DL_SESSION)) +# define HTTP_HAVE_SESSION +#endif + +#if defined(HAVE_HASH_EXT) && (HTTP_SHARED_DEPS || !defined(COMPILE_DL_HASH)) && defined(HTTP_HAVE_PHP_HASH_H) +# define HTTP_HAVE_HASH +#endif +#if defined(HAVE_SPL) +# define HTTP_HAVE_SPL +#endif PHP_FUNCTION(http_date); -PHP_FUNCTION(http_absolute_uri); +PHP_FUNCTION(http_build_url); +PHP_FUNCTION(http_build_str); PHP_FUNCTION(http_negotiate_language); PHP_FUNCTION(http_negotiate_charset); +PHP_FUNCTION(http_negotiate_content_type); +PHP_FUNCTION(http_negotiate); PHP_FUNCTION(http_redirect); +PHP_FUNCTION(http_throttle); PHP_FUNCTION(http_send_status); PHP_FUNCTION(http_send_last_modified); PHP_FUNCTION(http_send_content_type); @@ -156,38 +213,41 @@ PHP_FUNCTION(http_send_data); PHP_FUNCTION(http_send_file); PHP_FUNCTION(http_send_stream); PHP_FUNCTION(http_chunked_decode); -PHP_FUNCTION(http_split_response); +PHP_FUNCTION(http_parse_message); PHP_FUNCTION(http_parse_headers); +PHP_FUNCTION(http_parse_cookie); +PHP_FUNCTION(http_build_cookie); +PHP_FUNCTION(http_parse_params); PHP_FUNCTION(http_get_request_headers); +PHP_FUNCTION(http_get_request_body); +PHP_FUNCTION(http_get_request_body_stream); +PHP_FUNCTION(http_match_request_header); +PHP_FUNCTION(http_persistent_handles_count); +PHP_FUNCTION(http_persistent_handles_clean); +PHP_FUNCTION(http_persistent_handles_ident); #ifdef HTTP_HAVE_CURL PHP_FUNCTION(http_get); PHP_FUNCTION(http_head); PHP_FUNCTION(http_post_data); -PHP_FUNCTION(http_post_array); -#endif -PHP_FUNCTION(http_auth_basic); -PHP_FUNCTION(http_auth_basic_cb); - -PHP_FUNCTION(ob_httpetaghandler); - -PHP_MINIT_FUNCTION(http); -PHP_MSHUTDOWN_FUNCTION(http); -PHP_RINIT_FUNCTION(http); -PHP_RSHUTDOWN_FUNCTION(http); -PHP_MINFO_FUNCTION(http); - -ZEND_BEGIN_MODULE_GLOBALS(http) - zend_bool etag_started; - PHP_MD5_CTX etag_md5; - php_stream_statbuf ssb; - char *ctype; - char *etag; - time_t lmod; - char *allowed_methods; -#ifdef HTTP_HAVE_CURL - http_curlbuf curlbuf; +PHP_FUNCTION(http_post_fields); +PHP_FUNCTION(http_put_data); +PHP_FUNCTION(http_put_file); +PHP_FUNCTION(http_put_stream); +PHP_FUNCTION(http_request); +PHP_FUNCTION(http_request_body_encode); +#endif /* HTTP_HAVE_CURL */ +PHP_FUNCTION(http_request_method_register); +PHP_FUNCTION(http_request_method_unregister); +PHP_FUNCTION(http_request_method_exists); +PHP_FUNCTION(http_request_method_name); +PHP_FUNCTION(ob_etaghandler); +#ifdef HTTP_HAVE_ZLIB +PHP_FUNCTION(http_deflate); +PHP_FUNCTION(http_inflate); +PHP_FUNCTION(ob_deflatehandler); +PHP_FUNCTION(ob_inflatehandler); #endif -ZEND_END_MODULE_GLOBALS(http) +PHP_FUNCTION(http_support); #endif /* PHP_HTTP_H */