Copier le fichier distant à l'aide de Guzzle

Je suis en train de copier un fichier distant (image PNG, GIF, JPG ...) à mon serveur. J'utilise Bouffer depuis j'ai parfois 404 avec copier() même si le fichier existe et j'ai aussi besoin de faire une authentification basique. Ce script est dans un long script lancé dans la commande déclenchée par une tâche cron.
Je suis assez nouveau à Bouffer et j'ai réussi à copier l'image, mais mes fichiers ont tort de type mime. Je dois être en train de faire quelque chose de mal ici. Merci de me suggérer un bon moyen de le faire (y compris la vérification de la réussite/l'échec de la copie et le type mime à vérifier). Si le fichier n'a pas de type mime je pop une erreur avec des détails et des informations.

Voici le code:

$remoteFilePath = 'http://example.com/path/to/file.jpg';
$localFilePath = '/home/www/path/to/file.jpg';
try {
    $client = new Guzzle\Http\Client();
    $response = $client->send($client->get($remoteFilePath)->setAuth('login', 'password'));
    if ($response->getBody()->isReadable()) {
        if ($response->getStatusCode()==200) {
            //is this the proper way to retrieve mime type?
            //$mime = array_shift(array_values($response->getHeaders()->get('Content-Type')));
            file_put_contents ($localFilePath , $response->getBody()->getStream());
            return true;
        }
    }
} catch (Exception $e) {
    return $e->getMessage();
}

Quand je fais cela mon type mime est défini à application/x-vide

Aussi ça ressemble quand le statut est différent de 200 Bouffer va automatiquement lancer une exception. Comment puis-je arrêter ce comportement et de vérifier l'état de moi-même si je peux le message d'erreur personnalisé?

EDIT: C'était pour Bouffer 3.X
Maintenant, c'est comment vous pouvez le faire à l'aide de Bouffer v 4.X (fonctionne aussi bien avec Bâfrer 6)

$client = new \GuzzleHttp\Client();
$client->get(
    'http://path.to/remote.file',
    [
        'headers' => ['key'=>'value'],
        'query'   => ['param'=>'value'],
        'auth'    => ['username', 'password'],
        'save_to' => '/path/to/local.file',
    ]);

Ou à l'aide de Bouffer de flux:

use GuzzleHttp\Stream;

$original = Stream\create(fopen('https://path.to/remote.file', 'r')); 
$local = Stream\create(fopen('/path/to/local.file', 'w')); 
$local->write($original->getContents());

Cela ressemble beaucoup. Est-il mieux/solution adéquate lors de l'utilisation de Bouffer 4?

source d'informationauteur Spir