2016-04-06 1 views
0

Мне нужно загрузить удаленное изображение, чтобы его путь сохранялся на атрибуте wineTweet.label. И затем POST твит с этим изображением.Насколько эффективно отправлять твит с удаленным изображением с помощью Nodejs Stream?

Моя реализация работает, но я сначала сохранил изображение в файл, а затем прочитал его перед отправкой.

Вот код:

var file = fs.createWriteStream("file.jpg"); 
    https.get(wineTweet.label, function (response) { 
     response.pipe(file); 
     file.on('finish', function() { 
      var data = require('fs').readFileSync('file.jpg'); 
      // Make post request on media endpoint. Pass file data as media parameter 
      client.post('media/upload', {media: data}, function (error, media, response) { 
       if (!error) { 
        // If successful, a media object will be returned.       // Lets tweet it 
        var status = { 
         status : 'I am a tweet', 
         media_ids: media.media_id_string // Pass the media id string 
        } 
        client.post('statuses/update', status, function (error, tweet, response) { 
         if (!error) { 
          console.log(tweet); 
        }); 
       } 
      }); 
     }); 
    }); 

Как напрямую подключить ReadingStream на запрос POST?

+0

В какую библиотеку вы используете для размещения твитов? – mscdex

+0

пакет twitter – Anthony

ответ

1

Просто используйте response напрямую, что уже читаемый поток, вместо записи/чтения временного файла:

https.get(wineTweet.label, function(res) { 
    // Make post request on media endpoint. Pass file data as media parameter 
    client.post('media/upload', {media: res}, function(error, media, response) { 
    if (!error) { 
     // If successful, a media object will be returned.       // Lets tweet it 
     var status = { 
     status : 'I am a tweet', 
     media_ids: media.media_id_string // Pass the media id string 
     }; 
     client.post('statuses/update', status, function(error, tweet, response) { 
     if (!error) 
      console.log(tweet); 
     }); 
    } 
    }); 
}); 

На несвязанной ноте, вы должны обрабатывать ошибки должным образом, вместо того, чтобы игнорировать их.

+0

, который работает. Это всего лишь снайпер для демонстрации, поэтому теперь я буду обрабатывать ошибки. – Anthony

Смежные вопросы