/**
  * List contents of a directory.
  *
  * @param string $directory
  * @param bool   $recursive
  *
  * @return array
  */
 public function listContents($directory = '', $recursive = false)
 {
     $keys = $this->client->keys($directory . '/*');
     $values = [];
     foreach ($keys as $key) {
         if (!$recursive && preg_match("|{$directory}/.+/|", $key) !== 0) {
             continue;
         }
         $stream = tmpfile();
         fwrite($stream, $this->client->get($key));
         rewind($stream);
         $values[$key] = ['mimetype' => Util::guessMimeType(stream_get_meta_data($stream)['uri'], stream_get_contents($stream)), 'type' => 'file'];
     }
     return Util::emulateDirectories($values);
 }