示例#1
0
 /**
  * @return string
  */
 public function compile()
 {
     $cookies = Helpers::flatMapAssoc($this, function ($value, $keys) {
         $name = implode('][', array_map('urlencode', $keys));
         $name = count($keys) > 1 ? substr_replace($name, '', strpos($name, ']'), 1) . ']' : $name;
         return $name . '=' . urlencode($value);
     });
     return implode('; ', $cookies);
 }
示例#2
0
 /**
  * @param \Kdyby\Curl\Request $request
  */
 public function request(Curl\Request $request)
 {
     $id = md5(serialize($request));
     $content = array($request->method . ' ' . $request->getUrl());
     foreach ($request->headers as $name => $value) {
         $content[] = "{$name}: {$value}";
     }
     $content = '> ' . implode("\n> ", $content) . "\n";
     Curl\Helpers::flatMapAssoc($request->post + $request->files, function ($val, $keys) use(&$content) {
         $content .= implode("][", $keys) . ": " . Code\Helpers::dump($val) . "\n";
     });
     $this->write($content . "\n", $id);
     return $id;
 }
示例#3
0
 /**
  * @param array|string $post
  * @param array $files
  *
  * @throws NotSupportedException
  * @return CurlWrapper
  */
 public function setPost($post = array(), array $files = NULL)
 {
     if ($files) {
         if (!is_array($post)) {
             throw new NotSupportedException("Not implemented.");
         }
         array_walk_recursive($files, function (&$item) {
             if (PHP_VERSION_ID >= 50500) {
                 $pathname = realpath($item);
                 $type = finfo_file(finfo_open(FILEINFO_MIME_TYPE), $pathname);
                 $item = new \CurlFile($pathname, strpos($type, '/') ? $type : 'application/octet-stream', basename($item));
             } else {
                 $item = '@' . realpath($item);
             }
         });
         $post = Nette\Utils\Arrays::mergeTree($post, $files);
         $this->setHeader('Content-Type', 'multipart/form-data');
     }
     if ($post) {
         return $this->setOptions(array('post' => TRUE, 'postFields' => is_array($post) ? Helpers::flattenArray($post) : $post));
     }
     return $this->setOptions(array('post' => NULL, 'postFields' => NULL));
 }