| modification, are permitted provided that the conditions mentioned |
| in the accompanying LICENSE file are met. |
+--------------------------------------------------------------------+
- | Copyright (c) 2004-2010, Michael Wallner <mike@php.net> |
+ | Copyright (c) 2004-2011, Michael Wallner <mike@php.net> |
+--------------------------------------------------------------------+
*/
-/* $Id: php_http_message_body_api.h 292841 2009-12-31 08:48:57Z mike $ */
-
#ifndef PHP_HTTP_MESSAGE_BODY_H
#define PHP_HTTP_MESSAGE_BODY_H
#endif
} php_http_message_body_t;
+typedef enum php_http_message_body_file_is {
+ PHP_HTTP_MESSAGE_BODY_FILE_IS_EMPTY,
+ PHP_HTTP_MESSAGE_BODY_FILE_IS_DATA,
+ PHP_HTTP_MESSAGE_BODY_FILE_IS_PATH,
+ PHP_HTTP_MESSAGE_BODY_FILE_IS_STREAM
+} php_http_message_body_file_is_t;
+
+typedef struct php_http_message_body_file {
+ php_http_message_body_file_is_t type;
+ size_t length;
+ union {
+ char *data;
+ char *path;
+ php_stream *stream;
+ } file;
+} php_http_message_body_file_t;
+
PHP_HTTP_API php_http_message_body_t *php_http_message_body_init(php_http_message_body_t *body, php_stream *stream TSRMLS_DC);
-PHP_HTTP_API php_http_message_body_t *php_http_message_body_copy(php_http_message_body_t *from, php_http_message_body_t *to, zend_bool dup_internal_stream_and_contents TSRMLS_DC);
+PHP_HTTP_API php_http_message_body_t *php_http_message_body_copy(php_http_message_body_t *from, php_http_message_body_t *to, zend_bool dup_internal_stream_and_contents);
PHP_HTTP_API STATUS php_http_message_body_add(php_http_message_body_t *body, HashTable *fields, HashTable *files);
PHP_HTTP_API STATUS php_http_message_body_add_field(php_http_message_body_t *body, const char *name, const char *value_str, size_t value_len);
-PHP_HTTP_API STATUS php_http_message_body_add_file(php_http_message_body_t *body, const char *name, const char *path, const char *ctype);
+PHP_HTTP_API STATUS php_http_message_body_add_file(php_http_message_body_t *body, const char *name, const char *ctype, const char *file, php_stream *stream);
PHP_HTTP_API size_t php_http_message_body_append(php_http_message_body_t *body, const char *buf, size_t len);
+PHP_HTTP_API size_t php_http_message_body_appendf(php_http_message_body_t *body, const char *fmt, ...);
PHP_HTTP_API void php_http_message_body_to_string(php_http_message_body_t *body, char **buf, size_t *len, off_t offset, size_t forlen);
PHP_HTTP_API void php_http_message_body_to_stream(php_http_message_body_t *body, php_stream *s, off_t offset, size_t forlen);
PHP_HTTP_API void php_http_message_body_to_callback(php_http_message_body_t *body, php_http_pass_callback_t cb, void *cb_arg, off_t offset, size_t forlen);
PHP_HTTP_API void php_http_message_body_dtor(php_http_message_body_t *body);
PHP_HTTP_API void php_http_message_body_free(php_http_message_body_t **body);
-PHP_HTTP_API php_stream_statbuf *php_http_message_body_stat(php_http_message_body_t *body);
+PHP_HTTP_API const php_stream_statbuf *php_http_message_body_stat(php_http_message_body_t *body);
#define php_http_message_body_size(b) (php_http_message_body_stat((b))->sb.st_size)
#define php_http_message_body_mtime(b) (php_http_message_body_stat((b))->sb.st_mtime)
PHP_HTTP_API char *php_http_message_body_etag(php_http_message_body_t *body);
PHP_METHOD(HttpMessageBody, toCallback);
PHP_METHOD(HttpMessageBody, append);
PHP_METHOD(HttpMessageBody, add);
+PHP_METHOD(HttpMessageBody, etag);
+PHP_METHOD(HttpMessageBody, stat);
#endif