From 010824c4b5d38defede70075d2b54ff54631a17e Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Sun, 18 Jan 2015 02:44:55 +0100 Subject: [PATCH] Use HTTPClient to download avatar also make updateAvatar public so we can call it from update_ostatus_profile.php --- plugins/OStatus/classes/Ostatus_profile.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/plugins/OStatus/classes/Ostatus_profile.php b/plugins/OStatus/classes/Ostatus_profile.php index b94950138f..9e5e7b64c0 100644 --- a/plugins/OStatus/classes/Ostatus_profile.php +++ b/plugins/OStatus/classes/Ostatus_profile.php @@ -1233,7 +1233,7 @@ class Ostatus_profile extends Managed_DataObject * @param string $url * @throws Exception in various failure cases */ - protected function updateAvatar($url) + public function updateAvatar($url) { if ($url == $this->avatar) { // We've already got this one. @@ -1262,10 +1262,15 @@ class Ostatus_profile extends Managed_DataObject // ripped from oauthstore.php (for old OMB client) $temp_filename = tempnam(sys_get_temp_dir(), 'listener_avatar'); try { - if (!copy($url, $temp_filename)) { + $client = new HTTPClient(); + $response = $client->get($url); + + if (!$response->isOk()) { // TRANS: Server exception. %s is a URL. - throw new ServerException(sprintf(_m('Unable to fetch avatar from %s.'), $url)); + throw new ServerException(sprintf(_m('Unable to fetch avatar from %s.').':%s', $url, $response->getReasonPhrase())); } + // FIXME: make sure it's an image here instead of _after_ writing to a file? + file_put_contents($response->getBody(), $temp_filename); if ($this->isGroup()) { $id = $this->group_id;