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 <curl/curl.h>
20 #include "php_http_request_method.h"
21 #include "php_http_request_pool.h"
23 extern PHP_MINIT_FUNCTION(http_request
);
24 extern PHP_MSHUTDOWN_FUNCTION(http_request
);
26 typedef struct php_http_request_progress_state_counter
{
29 } php_http_request_progress_state_counter_t
;
31 typedef struct php_http_request_progress_state
{
32 php_http_request_progress_state_counter_t ul
;
33 php_http_request_progress_state_counter_t dl
;
34 } php_http_request_progress_state_t
;
36 typedef struct php_http_request
{
39 php_http_request_method_t meth
;
40 php_http_message_body_t
*body
;
42 php_http_message_parser_t
*ctx
;
43 php_http_message_t
*msg
;
44 php_http_buffer_t
*buf
;
48 php_http_buffer_t cookies
;
50 struct curl_slist
*headers
;
80 /* CURLOPT_PRIVATE storage living as long as a CURL handle */
81 typedef struct php_http_request_storage
{
84 char errorbuffer
[CURL_ERROR_SIZE
];
85 } php_http_request_storage_t
;
88 static inline php_http_request_storage_t
*php_http_request_storage_get(CURL
*ch
)
90 php_http_request_storage_t
*st
= NULL
;
91 curl_easy_getinfo(ch
, CURLINFO_PRIVATE
, &st
);
95 PHP_HTTP_API CURL
*php_http_curl_init(CURL
*ch
, php_http_request_t
*request TSRMLS_DC
);
96 PHP_HTTP_API
void php_http_curl_free(CURL
**ch TSRMLS_DC
);
97 PHP_HTTP_API CURL
*php_http_curl_copy(CURL
*ch TSRMLS_DC
);
99 #define PHP_HTTP_CHECK_CURL_INIT(ch, init, action) \
100 if ((!(ch)) && (!((ch) = init))) { \
101 php_http_error(HE_WARNING, PHP_HTTP_E_REQUEST, "Could not initialize curl"); \
106 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
);
107 PHP_HTTP_API
void php_http_request_dtor(php_http_request_t
*request
);
108 PHP_HTTP_API
void php_http_request_free(php_http_request_t
**request
);
109 PHP_HTTP_API
void php_http_request_reset(php_http_request_t
*r
);
110 PHP_HTTP_API STATUS
php_http_request_enable_cookies(php_http_request_t
*request
);
111 PHP_HTTP_API STATUS
php_http_request_reset_cookies(php_http_request_t
*request
, int session_only
);
112 PHP_HTTP_API STATUS
php_http_request_flush_cookies(php_http_request_t
*request
);
113 PHP_HTTP_API
void php_http_request_defaults(php_http_request_t
*request
);
114 PHP_HTTP_API STATUS
php_http_request_prepare(php_http_request_t
*request
, HashTable
*options
);
115 PHP_HTTP_API
void php_http_request_exec(php_http_request_t
*request
);
116 PHP_HTTP_API
void php_http_request_info(php_http_request_t
*request
, HashTable
*info
);
117 PHP_HTTP_API
void php_http_request_set_progress_callback(php_http_request_t
*request
, zval
*cb
);
120 typedef struct php_http_request_object
{
122 php_http_request_t
*request
;
123 php_http_request_pool_t
*pool
;
124 php_http_request_datashare_t
*share
;
125 } php_http_request_object_t
;
127 extern zend_class_entry
*php_http_request_class_entry
;
128 extern zend_function_entry php_http_request_method_entry
[];
130 extern zend_object_value
php_http_request_object_new(zend_class_entry
*ce TSRMLS_DC
);
131 extern zend_object_value
php_http_request_object_new_ex(zend_class_entry
*ce
, CURL
*ch
, php_http_request_object_t
**ptr TSRMLS_DC
);
132 extern zend_object_value
php_http_request_object_clone(zval
*zobject TSRMLS_DC
);
133 extern void php_http_request_object_free(void *object TSRMLS_DC
);
135 extern STATUS
php_http_request_object_requesthandler(php_http_request_object_t
*obj
, zval
*this_ptr TSRMLS_DC
);
136 extern STATUS
php_http_request_object_responsehandler(php_http_request_object_t
*obj
, zval
*this_ptr TSRMLS_DC
);
138 PHP_METHOD(HttpRequest
, __construct
);
139 PHP_METHOD(HttpRequest
, setOptions
);
140 PHP_METHOD(HttpRequest
, getOptions
);
141 PHP_METHOD(HttpRequest
, addSslOptions
);
142 PHP_METHOD(HttpRequest
, setSslOptions
);
143 PHP_METHOD(HttpRequest
, getSslOptions
);
144 PHP_METHOD(HttpRequest
, addHeaders
);
145 PHP_METHOD(HttpRequest
, getHeaders
);
146 PHP_METHOD(HttpRequest
, setHeaders
);
147 PHP_METHOD(HttpRequest
, addCookies
);
148 PHP_METHOD(HttpRequest
, getCookies
);
149 PHP_METHOD(HttpRequest
, setCookies
);
150 PHP_METHOD(HttpRequest
, enableCookies
);
151 PHP_METHOD(HttpRequest
, resetCookies
);
152 PHP_METHOD(HttpRequest
, flushCookies
);
153 PHP_METHOD(HttpRequest
, setMethod
);
154 PHP_METHOD(HttpRequest
, getMethod
);
155 PHP_METHOD(HttpRequest
, setUrl
);
156 PHP_METHOD(HttpRequest
, getUrl
);
157 PHP_METHOD(HttpRequest
, setContentType
);
158 PHP_METHOD(HttpRequest
, getContentType
);
159 PHP_METHOD(HttpRequest
, setQueryData
);
160 PHP_METHOD(HttpRequest
, getQueryData
);
161 PHP_METHOD(HttpRequest
, addQueryData
);
162 PHP_METHOD(HttpRequest
, getBody
);
163 PHP_METHOD(HttpRequest
, setBody
);
164 PHP_METHOD(HttpRequest
, addBody
);
165 PHP_METHOD(HttpRequest
, send
);
166 PHP_METHOD(HttpRequest
, getResponseData
);
167 PHP_METHOD(HttpRequest
, getResponseHeader
);
168 PHP_METHOD(HttpRequest
, getResponseCookies
);
169 PHP_METHOD(HttpRequest
, getResponseCode
);
170 PHP_METHOD(HttpRequest
, getResponseStatus
);
171 PHP_METHOD(HttpRequest
, getResponseBody
);
172 PHP_METHOD(HttpRequest
, getResponseInfo
);
173 PHP_METHOD(HttpRequest
, getResponseMessage
);
174 PHP_METHOD(HttpRequest
, getRawResponseMessage
);
175 PHP_METHOD(HttpRequest
, getRequestMessage
);
176 PHP_METHOD(HttpRequest
, getRawRequestMessage
);
177 PHP_METHOD(HttpRequest
, getHistory
);
178 PHP_METHOD(HttpRequest
, clearHistory
);
179 PHP_METHOD(HttpRequest
, getMessageClass
);
180 PHP_METHOD(HttpRequest
, setMessageClass
);
189 * vim600: noet sw=4 ts=4 fdm=marker
190 * vim<600: noet sw=4 ts=4