summaryrefslogtreecommitdiff
path: root/ext/curl/curl_file.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/curl/curl_file.c')
-rw-r--r--ext/curl/curl_file.c33
1 files changed, 27 insertions, 6 deletions
diff --git a/ext/curl/curl_file.c b/ext/curl/curl_file.c
index aad162604a..a8f8a793b2 100644
--- a/ext/curl/curl_file.c
+++ b/ext/curl/curl_file.c
@@ -25,6 +25,7 @@
#include "curl_file_arginfo.h"
PHP_CURL_API zend_class_entry *curl_CURLFile_class;
+PHP_CURL_API zend_class_entry *curl_CURLStringFile_class;
static void curlfile_ctor(INTERNAL_FUNCTION_PARAMETERS)
{
@@ -120,14 +121,34 @@ ZEND_METHOD(CURLFile, setPostFilename)
}
/* }}} */
+ZEND_METHOD(CURLStringFile, __construct)
+{
+ zend_string *data, *postname, *mime = NULL;
+ zval *object;
+
+ object = ZEND_THIS;
+
+ ZEND_PARSE_PARAMETERS_START(2,3)
+ Z_PARAM_STR(data)
+ Z_PARAM_STR(postname)
+ Z_PARAM_OPTIONAL
+ Z_PARAM_STR(mime)
+ ZEND_PARSE_PARAMETERS_END();
+
+ zend_update_property_str(curl_CURLStringFile_class, Z_OBJ_P(object), "data", sizeof("data") - 1, data);
+ zend_update_property_str(curl_CURLStringFile_class, Z_OBJ_P(object), "postname", sizeof("postname")-1, postname);
+ if (mime) {
+ zend_update_property_str(curl_CURLStringFile_class, Z_OBJ_P(object), "mime", sizeof("mime")-1, mime);
+ } else {
+ zend_update_property_string(curl_CURLStringFile_class, Z_OBJ_P(object), "mime", sizeof("mime")-1, "application/octet-stream");
+ }
+}
+
void curlfile_register_class(void)
{
- zend_class_entry ce;
- INIT_CLASS_ENTRY( ce, "CURLFile", class_CURLFile_methods );
- curl_CURLFile_class = zend_register_internal_class(&ce);
+ curl_CURLFile_class = register_class_CURLFile();
curl_CURLFile_class->serialize = zend_class_serialize_deny;
curl_CURLFile_class->unserialize = zend_class_unserialize_deny;
- zend_declare_property_string(curl_CURLFile_class, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC);
- zend_declare_property_string(curl_CURLFile_class, "mime", sizeof("mime")-1, "", ZEND_ACC_PUBLIC);
- zend_declare_property_string(curl_CURLFile_class, "postname", sizeof("postname")-1, "", ZEND_ACC_PUBLIC);
+
+ curl_CURLStringFile_class = register_class_CURLStringFile();
}