Example #1
0
 /**
  * Upload Video.
  *
  * @param \Userdesk\Submission\Classes\SubmissionVideoItem $item;
  *
  * @return \Userdesk\Submission\Classes\SubmissionResult;
  */
 public function uploadVideo(SubmissionVideoItem $item)
 {
     $tw = $this->providerFromToken();
     $video = file_get_contents($item->getVideo());
     $media_data = $tw->request('https://upload.twitter.com/1.1/media/upload.json', 'POST', array('command' => 'INIT', 'total_bytes' => strlen($video), 'media_type' => $item->getType()));
     $media = json_decode($media_data, true);
     $media_id = $media['media_id'];
     if ($media_id) {
         $tw->request('https://upload.twitter.com/1.1/media/upload.json', 'POST', array('command' => 'APPEND', 'segment_index' => 0, 'media_id' => $media_id, 'media_data' => base64_encode($video)));
         $tw->request('https://upload.twitter.com/1.1/media/upload.json', 'POST', array('command' => 'FINALIZE', 'media_id' => $media_id));
         $response = $tw->request('statuses/update.json', 'POST', array('status' => $item->getTitle(), 'media_ids' => $media_id));
         $status = json_decode($response, true);
         if (!empty($status['id']) && !empty($status['user'])) {
             $url = sprintf('https://twitter.com/%s/status/%s', $status['user']['screen_name'], $status['id']);
             return new SubmissionResult(true, '', $url);
         }
         return new SubmissionResult(false, 'Video Upload Failed');
     } else {
         throw new InvalidUploadException($e->getMessage());
     }
 }