X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_request.h;fp=php_http_request.h;h=0000000000000000000000000000000000000000;hp=d535dc4998be130c1b02f56a18dda9b98f4021da;hb=6cc24086f57aa1e8f4d6a2c12361635e7c24f60f;hpb=880540695ec6784e5570a15533467f7dff98d4f1 diff --git a/php_http_request.h b/php_http_request.h deleted file mode 100644 index d535dc4..0000000 --- a/php_http_request.h +++ /dev/null @@ -1,243 +0,0 @@ -/* - +--------------------------------------------------------------------+ - | 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-2011, Michael Wallner | - +--------------------------------------------------------------------+ -*/ - -#ifndef PHP_HTTP_REQUEST_H -#define PHP_HTTP_REQUEST_H - -#include "php_http_message_body.h" -#include "php_http_message_parser.h" - -typedef struct php_http_request_progress_state { - struct { - double now; - double total; - } ul; - struct { - double now; - double total; - } dl; - const char *info; - unsigned started:1; - unsigned finished:1; -} php_http_request_progress_state_t; - -#define PHP_HTTP_REQUEST_PROGRESS_CALLBACK_USER 0 -#define PHP_HTTP_REQUEST_PROGRESS_CALLBACK_INTERN 1 -typedef struct php_http_request_progress_callback { - union { - zval *user; - void (*intern)(php_http_request_progress_state_t* TSRMLS_DC); - } func; - unsigned type:1; - unsigned pass_state:1; -} php_http_request_progress_callback_t; - -typedef struct php_http_request_progress { - php_http_request_progress_state_t state; - php_http_request_progress_callback_t *callback; - unsigned in_cb:1; -} php_http_request_progress_t; - -static inline void php_http_request_progress_dtor(php_http_request_progress_t *progress TSRMLS_DC) -{ - if (progress->callback) { - if (progress->callback->type == PHP_HTTP_REQUEST_PROGRESS_CALLBACK_USER) { - zval_ptr_dtor(&progress->callback->func.user); - } - efree(progress->callback); - } - memset(progress, 0, sizeof(*progress)); -} - -static inline void php_http_request_progress_notify(php_http_request_progress_t *progress TSRMLS_DC) -{ - if (progress->callback) { - zval retval; - - INIT_PZVAL(&retval); - ZVAL_NULL(&retval); - - with_error_handling(EH_NORMAL, NULL) { - switch (progress->callback->type) { - case PHP_HTTP_REQUEST_PROGRESS_CALLBACK_USER: - if (progress->callback->pass_state) { - zval *param; - - MAKE_STD_ZVAL(param); - array_init(param); - add_assoc_bool(param, "started", progress->state.started); - add_assoc_bool(param, "finished", progress->state.finished); - add_assoc_string(param, "info", estrdup(progress->state.info), 0); - add_assoc_double(param, "dltotal", progress->state.dl.total); - add_assoc_double(param, "dlnow", progress->state.dl.now); - add_assoc_double(param, "ultotal", progress->state.ul.total); - add_assoc_double(param, "ulnow", progress->state.ul.now); - - progress->in_cb = 1; - call_user_function(EG(function_table), NULL, progress->callback->func.user, &retval, 1, ¶m TSRMLS_CC); - progress->in_cb = 0; - - zval_ptr_dtor(¶m); - } else { - progress->in_cb = 1; - call_user_function(EG(function_table), NULL, progress->callback->func.user, &retval, 0, NULL TSRMLS_CC); - progress->in_cb = 0; - } - break; - case PHP_HTTP_REQUEST_PROGRESS_CALLBACK_INTERN: - progress->callback->func.intern(progress->callback->pass_state ? &progress->state : NULL TSRMLS_CC); - break; - default: - break; - } - } end_error_handling(); - - zval_dtor(&retval); - } -} - -typedef enum php_http_request_setopt_opt { - PHP_HTTP_REQUEST_OPT_SETTINGS, /* HashTable* */ - PHP_HTTP_REQUEST_OPT_PROGRESS_CALLBACK, /* php_http_request_progress_callback_t* */ - PHP_HTTP_REQUEST_OPT_COOKIES_ENABLE, /* - */ - PHP_HTTP_REQUEST_OPT_COOKIES_RESET, /* - */ - PHP_HTTP_REQUEST_OPT_COOKIES_RESET_SESSION, /* - */ - PHP_HTTP_REQUEST_OPT_COOKIES_FLUSH, /* - */ -} php_http_request_setopt_opt_t; - -typedef enum php_http_request_getopt_opt { - PHP_HTTP_REQUEST_OPT_PROGRESS_INFO, /* php_http_request_progress_t** */ - PHP_HTTP_REQUEST_OPT_TRANSFER_INFO, /* HashTable* */ -} php_http_request_getopt_opt_t; - -typedef struct php_http_request php_http_request_t; - -typedef php_http_request_t *(*php_http_request_init_func_t)(php_http_request_t *h, void *arg); -typedef php_http_request_t *(*php_http_request_copy_func_t)(php_http_request_t *from, php_http_request_t *to); -typedef void (*php_http_request_dtor_func_t)(php_http_request_t *h); -typedef STATUS (*php_http_request_exec_func_t)(php_http_request_t *h, const char *meth, const char *url, php_http_message_body_t *body); -typedef STATUS (*php_http_request_reset_func_t)(php_http_request_t *h); -typedef STATUS (*php_http_request_setopt_func_t)(php_http_request_t *h, php_http_request_setopt_opt_t opt, void *arg); -typedef STATUS (*php_http_request_getopt_func_t)(php_http_request_t *h, php_http_request_getopt_opt_t opt, void *arg); - -typedef struct php_http_request_ops { - php_http_resource_factory_ops_t *rsrc; - php_http_request_init_func_t init; - php_http_request_copy_func_t copy; - php_http_request_dtor_func_t dtor; - php_http_request_reset_func_t reset; - php_http_request_exec_func_t exec; - php_http_request_setopt_func_t setopt; - php_http_request_getopt_func_t getopt; -} php_http_request_ops_t; - -PHP_HTTP_API php_http_request_ops_t *php_http_request_get_default_ops(TSRMLS_D); - -struct php_http_request { - void *ctx; - php_http_resource_factory_t *rf; - php_http_request_ops_t *ops; - php_http_message_parser_t *parser; - php_http_message_t *message; - php_http_buffer_t *buffer; -#ifdef ZTS - void ***ts; -#endif -}; - -PHP_HTTP_API php_http_request_t *php_http_request_init(php_http_request_t *h, php_http_request_ops_t *ops, php_http_resource_factory_t *rf, void *init_arg TSRMLS_DC); -PHP_HTTP_API php_http_request_t *php_http_request_copy(php_http_request_t *from, php_http_request_t *to); -PHP_HTTP_API STATUS php_http_request_exec(php_http_request_t *h, const char *meth, const char *url, php_http_message_body_t *body); -PHP_HTTP_API STATUS php_http_request_reset(php_http_request_t *h); -PHP_HTTP_API STATUS php_http_request_setopt(php_http_request_t *h, php_http_request_setopt_opt_t opt, void *arg); -PHP_HTTP_API STATUS php_http_request_getopt(php_http_request_t *h, php_http_request_getopt_opt_t opt, void *arg); -PHP_HTTP_API void php_http_request_dtor(php_http_request_t *h); -PHP_HTTP_API void php_http_request_free(php_http_request_t **h); - -typedef struct php_http_request_object { - zend_object zo; - php_http_request_t *request; -} php_http_request_object_t; - -extern zend_class_entry *php_http_request_class_entry; -extern zend_function_entry php_http_request_method_entry[]; - -extern zend_object_value php_http_request_object_new(zend_class_entry *ce TSRMLS_DC); -extern zend_object_value php_http_request_object_new_ex(zend_class_entry *ce, php_http_request_t *r, php_http_request_object_t **ptr TSRMLS_DC); -extern zend_object_value php_http_request_object_clone(zval *zobject TSRMLS_DC); -extern void php_http_request_object_free(void *object TSRMLS_DC); - -extern STATUS php_http_request_object_requesthandler(php_http_request_object_t *obj, zval *this_ptr, char **meth, char **url, php_http_message_body_t **body TSRMLS_DC); -extern STATUS php_http_request_object_responsehandler(php_http_request_object_t *obj, zval *this_ptr TSRMLS_DC); - -PHP_METHOD(HttpRequest, __construct); -PHP_METHOD(HttpRequest, getObservers); -PHP_METHOD(HttpRequest, notify); -PHP_METHOD(HttpRequest, attach); -PHP_METHOD(HttpRequest, detach); -PHP_METHOD(HttpRequest, getProgress); -PHP_METHOD(HttpRequest, getTransferInfo); -PHP_METHOD(HttpRequest, setOptions); -PHP_METHOD(HttpRequest, getOptions); -PHP_METHOD(HttpRequest, addSslOptions); -PHP_METHOD(HttpRequest, setSslOptions); -PHP_METHOD(HttpRequest, getSslOptions); -PHP_METHOD(HttpRequest, addHeaders); -PHP_METHOD(HttpRequest, getHeaders); -PHP_METHOD(HttpRequest, setHeaders); -PHP_METHOD(HttpRequest, addCookies); -PHP_METHOD(HttpRequest, getCookies); -PHP_METHOD(HttpRequest, setCookies); -PHP_METHOD(HttpRequest, enableCookies); -PHP_METHOD(HttpRequest, resetCookies); -PHP_METHOD(HttpRequest, flushCookies); -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, getBody); -PHP_METHOD(HttpRequest, setBody); -PHP_METHOD(HttpRequest, addBody); -PHP_METHOD(HttpRequest, send); -PHP_METHOD(HttpRequest, getResponseData); -PHP_METHOD(HttpRequest, getResponseHeader); -PHP_METHOD(HttpRequest, getResponseCookies); -PHP_METHOD(HttpRequest, getResponseCode); -PHP_METHOD(HttpRequest, getResponseStatus); -PHP_METHOD(HttpRequest, getResponseBody); -PHP_METHOD(HttpRequest, getResponseMessage); -PHP_METHOD(HttpRequest, getRawResponseMessage); -PHP_METHOD(HttpRequest, getRequestMessage); -PHP_METHOD(HttpRequest, getRawRequestMessage); -PHP_METHOD(HttpRequest, getHistory); -PHP_METHOD(HttpRequest, clearHistory); -PHP_METHOD(HttpRequest, getMessageClass); -PHP_METHOD(HttpRequest, setMessageClass); - -extern PHP_MINIT_FUNCTION(http_request); - -#endif - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: noet sw=4 ts=4 fdm=marker - * vim<600: noet sw=4 ts=4 - */ -