- add put methods for HttpRequest
[m6w6/ext-http] / http_methods.c
index 980245c6f3bca12fa4d0659d25368a16fe1ebf73..a8e0560f285d19a62edb337e5cc47096171d0d6f 100644 (file)
@@ -1726,6 +1726,29 @@ PHP_METHOD(HttpRequest, addPostFile)
 }
 /* }}} */
 
+/* {{{ proto bool HttpRequest::setPostFiles()
+ *
+ * Set files to post.
+ * Overwrites previously set post files.
+ * Affects only POST requests.
+ */
+PHP_METHOD(HttpRequest, setPostFiles)
+{
+       zval *files, *pFiles;
+       getObject(http_request_object, obj);
+
+       if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &files)) {
+               RETURN_FALSE;
+       }
+
+       pFiles = GET_PROP(obj, postFiles);
+       zend_hash_clean(Z_ARRVAL_P(pFiles));
+       array_copy(files, pFiles);
+
+       RETURN_TRUE;
+}
+/* }}} */
+
 /* {{{ proto array HttpRequest::getPostFiles()
  *
  * Get all previously added POST files.
@@ -1763,6 +1786,59 @@ PHP_METHOD(HttpRequest, unsetPostFiles)
 }
 /* }}} */
 
+/* {{{ proto bool HttpRequest::SetPutFile(string file)
+ *
+ * Set file to put.
+ * Affects only PUT requests.
+ */
+PHP_METHOD(HttpRequest, setPutFile)
+{
+       char *file;
+       int file_len;
+       getObject(http_request_object, obj);
+       
+       if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &file, &file_len)) {
+               RETURN_FALSE;
+       }
+       
+       UPD_PROP(obj, string, putFile, file);
+       RETURN_TRUE;
+}
+/* }}} */
+
+/* {{{ proto string HttpRequest::getPutFile()
+ *
+ * Get previously set put file.
+ */
+PHP_METHOD(HttpRequest, getPutFile)
+{
+       NO_ARGS;
+
+       IF_RETVAL_USED {
+               zval *putfile;
+               getObject(http_request_object, obj);
+
+               putfile = GET_PROP(obj, putFile);
+               RETVAL_STRINGL(Z_STRVAL_P(putfile), Z_STRLEN_P(putfile), 1);
+       }
+}
+/* }}} */
+
+/* {{{ proto void HttpRequest::unsetPutFile()
+ *
+ * Unset file to put.
+ * Affects only PUT requests.
+ */
+PHP_METHOD(HttpRequest, unsetPutFile)
+{
+       getObject(http_request_object, obj);
+
+       NO_ARGS;
+
+       UPD_PROP(obj, string, putFile, "");
+}
+/* }}} */
+
 /* {{{ proto array HttpRequest::getResponseData()
  *
  * Get all response data after the request has been sent.