From e004e20352491260d09c3e52fa6ed2da93da9f60 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 9 Aug 2023 23:13:37 +0000 Subject: [PATCH] Transmit the media type --- twitter/twitter.php | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/twitter/twitter.php b/twitter/twitter.php index d0f9b5bf..69641218 100644 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -46,6 +46,7 @@ use Friendica\Model\Item; use Friendica\Model\Post; use Friendica\Core\Config\Util\ConfigFileManager; use Friendica\Model\Photo; +use Friendica\Util\Images; use GuzzleHttp\Client; use GuzzleHttp\HandlerStack; use GuzzleHttp\Subscriber\Oauth\Oauth1; @@ -219,7 +220,7 @@ function twitter_post_hook(array &$b) } catch (\Throwable $th) { Logger::warning('Error while uploading image', ['image' => $image, 'code' => $th->getCode(), 'message' => $th->getMessage()]); Worker::defer(); - break; + return; } } } @@ -265,13 +266,17 @@ function twitter_upload_image(int $uid, array $image) $photo = Photo::createPhotoForExternalResource($image['url']); } + $picturedata = Photo::getImageForPhoto($photo); + + $mimetype = $photo['type'] ?: Images::getMimeTypeByData($picturedata); + $parameters = [ 'name' => 'media_data', - 'contents' => base64_encode(Photo::getImageForPhoto($photo)) + 'contents' => base64_encode($picturedata) ]; - Logger::info('Uploading', ['uid' => $uid, 'image' => $image]); - $media = twitter_post($uid, 'https://upload.twitter.com/1.1/media/upload.json', 'multipart', [$parameters]); + Logger::info('Uploading', ['uid' => $uid, 'size' => strlen($parameters['contents']), 'image' => $image]); + $media = twitter_post($uid, 'https://upload.twitter.com/1.1/media/upload.json?' . http_build_query(['media_type' => $mimetype]), 'multipart', [$parameters]); if (isset($media->media_id_string)) { $media_id = $media->media_id_string; @@ -287,7 +292,7 @@ function twitter_upload_image(int $uid, array $image) Logger::info('Metadata create', ['uid' => $uid, 'data' => $data, 'return' => $ret]); } } else { - Logger::error('Failed upload', ['uid' => $uid, 'image' => $image['url'], 'return' => $media]); + Logger::error('Failed upload', ['uid' => $uid, 'size' => strlen($parameters['contents']), 'image' => $image['url'], 'return' => $media]); throw new Exception('Failed upload of ' . $image['url']); }