2 +--------------------------------------------------------------------+
4 +--------------------------------------------------------------------+
5 | Redistribution and use in source and binary forms, with or without |
6 | modification, are permitted provided that the conditions mentioned |
7 | in the accompanying LICENSE file are met. |
8 +--------------------------------------------------------------------+
9 | Copyright (c) 2004-2010, Michael Wallner <mike@php.net> |
10 +--------------------------------------------------------------------+
13 /* $Id: php_http_request_api.h 292841 2009-12-31 08:48:57Z mike $ */
15 #ifndef PHP_HTTP_REQUEST_H
16 #define PHP_HTTP_REQUEST_H
18 #include "php_http_request_method.h"
19 #include "php_http_request_pool.h"
21 extern PHP_MINIT_FUNCTION(http_request
);
22 extern PHP_MSHUTDOWN_FUNCTION(http_request
);
24 typedef struct php_http_request_progress_state_counter
{
27 } php_http_request_progress_state_counter_t
;
29 typedef struct php_http_request_progress_state
{
30 php_http_request_progress_state_counter_t ul
;
31 php_http_request_progress_state_counter_t dl
;
32 } php_http_request_progress_state_t
;
34 typedef struct php_http_request
{
37 php_http_request_method_t meth
;
38 php_http_message_body_t
*body
;
40 php_http_message_parser_t
*ctx
;
41 php_http_message_t
*msg
;
46 php_http_buffer cookies
;
48 struct curl_slist
*headers
;
77 /* CURLOPT_PRIVATE storage living as long as a CURL handle */
78 typedef struct php_http_request_storage
{
81 char errorbuffer
[CURL_ERROR_SIZE
];
82 } php_http_request_storage_t
;
85 static inline php_http_request_storage_t
*php_http_request_storage_get(CURL
*ch
)
87 php_http_request_storage_t
*st
= NULL
;
88 curl_easy_getinfo(ch
, CURLINFO_PRIVATE
, &st
);
92 PHP_HTTP_API CURL
*php_http_curl_init(CURL
*ch
, php_http_request_t
*request TSRMLS_DC
);
93 PHP_HTTP_API
void php_http_curl_free(CURL
**ch TSRMLS_DC
);
94 PHP_HTTP_API CURL
*php_http_curl_copy(CURL
*ch TSRMLS_DC
);
96 #define PHP_HTTP_CHECK_CURL_INIT(ch, init, action) \
97 if ((!(ch)) && (!((ch) = init))) { \
98 php_http_error(HE_WARNING, PHP_HTTP_E_REQUEST, "Could not initialize curl"); \
103 PHP_HTTP_API php_http_request_t
*php_http_request_init(php_http_request_t
*request
, CURL
*ch
, php_http_request_method_t meth
, const char *url TSRMLS_DC
);
104 PHP_HTTP_API
void php_http_request_dtor(php_http_request_t
*request
);
105 PHP_HTTP_API
void php_http_request_free(php_http_request_t
**request
);
106 PHP_HTTP_API
void php_http_request_reset(php_http_request_t
*r
);
107 PHP_HTTP_API STATUS
php_http_request_enable_cookies(php_http_request_t
*request
);
108 PHP_HTTP_API STATUS
php_http_request_reset_cookies(php_http_request_t
*request
, int session_only
);
109 PHP_HTTP_API STATUS
php_http_request_flush_cookies(php_http_request_t
*request
);
110 PHP_HTTP_API
void php_http_request_defaults(php_http_request_t
*request
);
111 PHP_HTTP_API STATUS
php_http_request_prepare(php_http_request_t
*request
, HashTable
*options
);
112 PHP_HTTP_API
void php_http_request_exec(php_http_request_t
*request
);
113 PHP_HTTP_API
void php_http_request_info(php_http_request_t
*request
, HashTable
*info
);
114 PHP_HTTP_API
void php_http_request_set_progress_callback(php_http_request_t
*request
, zval
*cb
);
117 typedef struct php_http_request_object
{
119 php_http_request_t
*request
;
120 php_http_request_pool_t
*pool
;
121 php_http_request_datashare_t
*share
;
122 } php_http_request_object_t
;
124 extern zend_class_entry
*php_http_request_class_entry
;
125 extern zend_function_entry php_http_request_method_entry
[];
127 extern zend_object_value
php_http_request_object_new(zend_class_entry
*ce TSRMLS_DC
);
128 extern zend_object_value
php_http_request_object_new_ex(zend_class_entry
*ce
, CURL
*ch
, php_http_request_object_t
**ptr TSRMLS_DC
);
129 extern zend_object_value
php_http_request_object_clone(zval
*zobject TSRMLS_DC
);
130 extern void php_http_request_object_free(void *object TSRMLS_DC
);
132 extern STATUS
php_http_request_object_requesthandler(php_http_request_object_t
*obj
, zval
*this_ptr TSRMLS_DC
);
133 extern STATUS
php_http_request_object_responsehandler(php_http_request_object_t
*obj
, zval
*this_ptr TSRMLS_DC
);
135 PHP_METHOD(HttpRequest
, __construct
);
136 PHP_METHOD(HttpRequest
, setOptions
);
137 PHP_METHOD(HttpRequest
, getOptions
);
138 PHP_METHOD(HttpRequest
, addSslOptions
);
139 PHP_METHOD(HttpRequest
, setSslOptions
);
140 PHP_METHOD(HttpRequest
, getSslOptions
);
141 PHP_METHOD(HttpRequest
, addHeaders
);
142 PHP_METHOD(HttpRequest
, getHeaders
);
143 PHP_METHOD(HttpRequest
, setHeaders
);
144 PHP_METHOD(HttpRequest
, addCookies
);
145 PHP_METHOD(HttpRequest
, getCookies
);
146 PHP_METHOD(HttpRequest
, setCookies
);
147 PHP_METHOD(HttpRequest
, enableCookies
);
148 PHP_METHOD(HttpRequest
, resetCookies
);
149 PHP_METHOD(HttpRequest
, flushCookies
);
150 PHP_METHOD(HttpRequest
, setMethod
);
151 PHP_METHOD(HttpRequest
, getMethod
);
152 PHP_METHOD(HttpRequest
, setUrl
);
153 PHP_METHOD(HttpRequest
, getUrl
);
154 PHP_METHOD(HttpRequest
, setContentType
);
155 PHP_METHOD(HttpRequest
, getContentType
);
156 PHP_METHOD(HttpRequest
, setQueryData
);
157 PHP_METHOD(HttpRequest
, getQueryData
);
158 PHP_METHOD(HttpRequest
, addQueryData
);
159 PHP_METHOD(HttpRequest
, getBody
);
160 PHP_METHOD(HttpRequest
, setBody
);
161 PHP_METHOD(HttpRequest
, addBody
);
162 PHP_METHOD(HttpRequest
, send
);
163 PHP_METHOD(HttpRequest
, getResponseData
);
164 PHP_METHOD(HttpRequest
, getResponseHeader
);
165 PHP_METHOD(HttpRequest
, getResponseCookies
);
166 PHP_METHOD(HttpRequest
, getResponseCode
);
167 PHP_METHOD(HttpRequest
, getResponseStatus
);
168 PHP_METHOD(HttpRequest
, getResponseBody
);
169 PHP_METHOD(HttpRequest
, getResponseInfo
);
170 PHP_METHOD(HttpRequest
, getResponseMessage
);
171 PHP_METHOD(HttpRequest
, getRawResponseMessage
);
172 PHP_METHOD(HttpRequest
, getRequestMessage
);
173 PHP_METHOD(HttpRequest
, getRawRequestMessage
);
174 PHP_METHOD(HttpRequest
, getHistory
);
175 PHP_METHOD(HttpRequest
, clearHistory
);
176 PHP_METHOD(HttpRequest
, getMessageClass
);
177 PHP_METHOD(HttpRequest
, setMessageClass
);
186 * vim600: noet sw=4 ts=4 fdm=marker
187 * vim<600: noet sw=4 ts=4