2015-06-26 57 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

相关问题