Merge pull request #39 from scottmotte/master

Fixes file attachments/uploads
This commit is contained in:
Marco Palladino
2014-03-27 11:41:22 -07:00
2 changed files with 34 additions and 6 deletions

View File

@@ -133,7 +133,7 @@ class Unirest
* This function is useful for serializing multidimensional arrays, and avoid getting
* the "Array to string conversion" notice
*/
private static function http_build_query_for_curl($arrays, &$new = array(), $prefix = null)
public static function http_build_query_for_curl($arrays, &$new = array(), $prefix = null)
{
if (is_object($arrays)) {
$arrays = get_object_vars($arrays);
@@ -141,7 +141,7 @@ class Unirest
foreach ($arrays AS $key => $value) {
$k = isset($prefix) ? $prefix . '[' . $key . ']' : $key;
if (is_array($value) OR is_object($value)) {
if (!$value instanceof CURLFile AND (is_array($value) OR is_object($value))) {
Unirest::http_build_query_for_curl($value, $new, $k);
} else {
$new[$k] = $value;

View File

@@ -204,6 +204,23 @@ class UnirestTest extends UnitTestCase
$this->assertEqual("Mark", $form->name);
}
public function testUploadIfFilePartOfData()
{
$response = Unirest::post("http://httpbin.org/post", array(
"Accept" => "application/json"
), array(
"name" => "Mark",
"files[owl.gif]" => Unirest::file(dirname(__FILE__) . "/test_upload.txt")
));
$this->assertEqual(200, $response->code);
//$files = $response->body->files;
//$this->assertEqual("This is a test", $files->file);
$form = $response->body->form;
$this->assertEqual("Mark", $form->name);
}
public function testPostMultidimensionalArray()
{
$response = Unirest::post("http://httpbin.org/post", array(
@@ -343,4 +360,15 @@ class UnirestTest extends UnitTestCase
$this->assertEqual("ciao", $headers->{'User-Agent'});
}
public function testHttpBuildQueryWhenCurlFile()
{
$file = Unirest::file(dirname(__FILE__) . "/test_upload.txt");
$body = array(
"to" => "mail@mailinator.com",
"from" => "mail@mailinator.com",
"file" => $file
);
Unirest::http_build_query_for_curl($body, $postBody);
$this->assertEqual($postBody['file'], $file);
}
}