X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http.h;h=db41f350055a8841d740d4612ed8d5ab53193906;hp=95624e5e2ef37ffa11ef402ad961ea9bbd96d4b5;hb=c47e19e21bc9318f8757e5578168b9ee4919d846;hpb=ac27503d8f6b671d2c7e19dda55e943c1cb57e50 diff --git a/php_http.h b/php_http.h index 95624e5..db41f35 100644 --- a/php_http.h +++ b/php_http.h @@ -18,135 +18,79 @@ #ifndef PHP_EXT_HTTP_H #define PHP_EXT_HTTP_H -#define HTTP_PEXT_VERSION "0.7.0-dev" +#define HTTP_PEXT_VERSION "0.14.0" /* make compile on Win32 */ -#include "php_streams.h" -#include "ext/standard/md5.h" +#ifdef HTTP_HAVE_CURL +# ifdef PHP_WIN32 +# include +# endif +# include +#endif + #include "phpstr/phpstr.h" 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 - -#ifdef ZEND_ENGINE_2 - -typedef struct { - zend_object zo; -} http_response_object; +extern int http_module_number; -#ifdef HTTP_HAVE_CURL +ZEND_BEGIN_MODULE_GLOBALS(http) -#ifdef PHP_WIN32 -# include +#ifdef ZEND_ENGINE_2 + zend_bool only_exceptions; #endif + struct _http_globals_etag { + long mode; + void *ctx; + zend_bool started; + } etag; + + struct _http_globals_log { + char *cache; + char *redirect; + 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; + } send; + + struct _http_globals_request { + struct _http_globals_request_methods { + char *allowed; + HashTable custom; + } methods; -#include - -typedef struct { - zend_object zo; - CURL *ch; -} http_request_object; - -typedef enum { - HTTP_GET = 1, - HTTP_HEAD, - HTTP_POST, -} http_request_method; - -#endif /* HTTP_HAVE _CURL */ - -PHP_METHOD(HttpUtil, date); -PHP_METHOD(HttpUtil, absoluteURI); -PHP_METHOD(HttpUtil, negotiateLanguage); -PHP_METHOD(HttpUtil, negotiateCharset); -PHP_METHOD(HttpUtil, redirect); -PHP_METHOD(HttpUtil, sendStatus); -PHP_METHOD(HttpUtil, sendLastModified); -PHP_METHOD(HttpUtil, sendContentType); -PHP_METHOD(HttpUtil, sendContentDisposition); -PHP_METHOD(HttpUtil, matchModified); -PHP_METHOD(HttpUtil, matchEtag); -PHP_METHOD(HttpUtil, cacheLastModified); -PHP_METHOD(HttpUtil, cacheEtag); -PHP_METHOD(HttpUtil, chunkedDecode); -PHP_METHOD(HttpUtil, splitResponse); -PHP_METHOD(HttpUtil, parseHeaders); -PHP_METHOD(HttpUtil, getRequestHeaders); #ifdef HTTP_HAVE_CURL -PHP_METHOD(HttpUtil, get); -PHP_METHOD(HttpUtil, head); -PHP_METHOD(HttpUtil, postData); -PHP_METHOD(HttpUtil, postArray); + struct _http_globals_request_copies { + zend_llist strings; + zend_llist slists; + zend_llist contexts; + zend_llist convs; + } copies; +# ifndef HAVE_CURL_EASY_STRERROR + char error[CURL_ERROR_SIZE + 1]; +# endif #endif /* HTTP_HAVE_CURL */ -PHP_METHOD(HttpUtil, authBasic); -PHP_METHOD(HttpUtil, authBasicCallback); - - -PHP_METHOD(HttpResponse, __construct);/* -PHP_METHOD(HttpResponse, __destruct);*/ -PHP_METHOD(HttpResponse, setETag); -PHP_METHOD(HttpResponse, getETag); -PHP_METHOD(HttpResponse, setContentDisposition); -PHP_METHOD(HttpResponse, getContentDisposition); -PHP_METHOD(HttpResponse, setContentType); -PHP_METHOD(HttpResponse, getContentType); -PHP_METHOD(HttpResponse, setCache); -PHP_METHOD(HttpResponse, getCache); -PHP_METHOD(HttpResponse, setCacheControl); -PHP_METHOD(HttpResponse, getCacheControl); -PHP_METHOD(HttpResponse, setGzip); -PHP_METHOD(HttpResponse, getGzip); -PHP_METHOD(HttpResponse, setData); -PHP_METHOD(HttpResponse, getData); -PHP_METHOD(HttpResponse, setFile); -PHP_METHOD(HttpResponse, getFile); -PHP_METHOD(HttpResponse, setStream); -PHP_METHOD(HttpResponse, getStream); -PHP_METHOD(HttpResponse, send); - -#ifdef HTTP_HAVE_CURL - -PHP_METHOD(HttpRequest, __construct); -PHP_METHOD(HttpRequest, __destruct); -PHP_METHOD(HttpRequest, setOptions); -PHP_METHOD(HttpRequest, getOptions); -PHP_METHOD(HttpRequest, unsetOptions); -PHP_METHOD(HttpRequest, addHeader); -PHP_METHOD(HttpRequest, addCookie); -PHP_METHOD(HttpRequest, setMethod); -PHP_METHOD(HttpRequest, getMethod); -PHP_METHOD(HttpRequest, setURL); -PHP_METHOD(HttpRequest, getURL); -PHP_METHOD(HttpRequest, setContentType); -PHP_METHOD(HttpRequest, getContentType); -PHP_METHOD(HttpRequest, setQueryData); -PHP_METHOD(HttpRequest, getQueryData); -PHP_METHOD(HttpRequest, addQueryData); -PHP_METHOD(HttpRequest, unsetQueryData); -PHP_METHOD(HttpRequest, setPostData); -PHP_METHOD(HttpRequest, getPostData); -PHP_METHOD(HttpRequest, addPostData); -PHP_METHOD(HttpRequest, unsetPostData); -PHP_METHOD(HttpRequest, addPostFile); -PHP_METHOD(HttpRequest, getPostFiles); -PHP_METHOD(HttpRequest, unsetPostFiles); -PHP_METHOD(HttpRequest, send); -PHP_METHOD(HttpRequest, getResponseData); -PHP_METHOD(HttpRequest, getResponseHeader); -PHP_METHOD(HttpRequest, getResponseCode); -PHP_METHOD(HttpRequest, getResponseBody); -PHP_METHOD(HttpRequest, getResponseInfo); + } request; -#endif /* HTTP_HAVE_CURL */ +ZEND_END_MODULE_GLOBALS(http) -#endif /* ZEND_ENGINE_2 */ +#ifdef ZTS +# include "TSRM.h" +# define HTTP_G(v) TSRMG(http_globals_id, zend_http_globals *, v) +# define HTTP_GLOBALS ((zend_http_globals *) (*((void ***) tsrm_ls))[TSRM_UNSHUFFLE_RSRC_ID(http_globals_id)]) +#else +# define HTTP_G(v) (http_globals.v) +# define HTTP_GLOBALS (&http_globals) +#endif +#define getGlobals(G) zend_http_globals *G = HTTP_GLOBALS; PHP_FUNCTION(http_test); PHP_FUNCTION(http_date); @@ -154,6 +98,7 @@ PHP_FUNCTION(http_absolute_uri); PHP_FUNCTION(http_negotiate_language); PHP_FUNCTION(http_negotiate_charset); 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); @@ -166,21 +111,27 @@ 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_get_request_headers); +PHP_FUNCTION(http_get_request_body); +PHP_FUNCTION(http_match_request_header); #ifdef HTTP_HAVE_CURL PHP_FUNCTION(http_get); PHP_FUNCTION(http_head); PHP_FUNCTION(http_post_data); -PHP_FUNCTION(http_post_array); +PHP_FUNCTION(http_post_fields); +PHP_FUNCTION(http_put_file); +PHP_FUNCTION(http_put_stream); #endif /* HTTP_HAVE_CURL */ -PHP_FUNCTION(http_auth_basic); -PHP_FUNCTION(http_auth_basic_cb); +PHP_FUNCTION(http_request_method_register); +PHP_FUNCTION(http_request_method_unregister); +PHP_FUNCTION(http_request_method_exists); +PHP_FUNCTION(http_request_method_name); #ifndef ZEND_ENGINE_2 PHP_FUNCTION(http_build_query); #endif /* ZEND_ENGINE_2 */ -PHP_FUNCTION(ob_httpetaghandler); +PHP_FUNCTION(ob_etaghandler); PHP_MINIT_FUNCTION(http); PHP_MSHUTDOWN_FUNCTION(http); @@ -188,20 +139,6 @@ 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 - phpstr curlbuf; - zend_llist to_free; -#endif /* HTTP_HAVE_CURL */ -ZEND_END_MODULE_GLOBALS(http) - #endif /* PHP_HTTP_H */ /*