Пример #1
0
 /**
  * Apply POST fields and files to a request to attempt to give an accurate
  * representation.
  *
  * @param puzzle_message_RequestInterface $request Request to update
  * @param array            $body    Body to apply
  */
 protected function addPostData(puzzle_message_RequestInterface $request, array $body)
 {
     static $fields = array('string' => true, 'array' => true, 'NULL' => true, 'boolean' => true, 'double' => true, 'integer' => true);
     $post = new puzzle_post_PostBody();
     foreach ($body as $key => $value) {
         if (isset($fields[gettype($value)])) {
             $post->setField($key, $value);
         } elseif ($value instanceof puzzle_post_PostFileInterface) {
             $post->addFile($value);
         } else {
             $post->addFile(new puzzle_post_PostFile($key, $value));
         }
     }
     if ($request->getHeader('Content-Type') == 'multipart/form-data') {
         $post->forceMultipartUpload(true);
     }
     $request->setBody($post);
 }
Пример #2
0
 public function testMultipartWithAmpersandInValue()
 {
     $b = new puzzle_post_PostBody();
     $b->setField('a', 'b&c=d');
     $b->forceMultipartUpload(true);
     $this->assertEquals(array('a' => 'b&c=d'), $b->getFields());
     $m = new puzzle_message_Request('POST', '/');
     $b->applyRequestHeaders($m);
     $this->assertContains('multipart/form-data', $m->getHeader('Content-Type'));
     $this->assertTrue($m->hasHeader('Content-Length'));
     $contents = $b->getContents();
     $this->assertContains('name="a"', $contents);
     $this->assertContains('b&c=d', $contents);
 }