2015-06-26 60 views
1

我試圖創建一個從request一個ReadableStream對象,最終我想它傳遞到了安裝變量mailgun-js的數據對象:正確的方式來流`request`請求?

var fileStream = null; 
request(String(url)).pipe(fileStream); 

msg.attachment = new mailgun.Attachment({ 
    data: fileStream, 
    filename: 'my_custom_name.png', 
    knownLength: fileStat.size, 
    contentType: 'image/png'}); 

什麼是做到這一點的正確方法是什麼?

回答

0

沒有測試,但值得給予一試:

var stream = new require('stream').PassThrough(); 

request(String(url)).pipe(stream); 

msg.attachment = new mailgun.Attachment({ 
    data  : stream, 
    filename : 'my_custom_name.png', 
    knownLength : fileStat.size, 
    contentType : 'image/png' 
}); 

request()似乎並沒有從Stream繼承,所以直接將它作爲data屬性將無法正常工作。相反,將創建一個PassThrough流,該流繼承自ReadableWritable

Readable部分將被Mailgun類使用,並且Writable部分將獲取傳入的HTTP響應數據。

1

我知道這有點晚,但希望仍然有幫助。剛剛提交pull請求有這樣的功能:

var request = require('request'); 
var file = request("https://www.google.ca/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"); 

var data = { 
    from: 'Excited User <[email protected]>', 
    to: '[email protected]', 
    subject: 'Hello', 
    text: 'Testing some Mailgun awesomness!', 
    attachment: file 
}; 

mailgun.messages().send(data, function (error, body) { 
    console.log(body); 
}); 

如果它不會合並,你可以在這裏看到: https://github.com/antoniosou/mailgun-js

相關問題