Advertisement
Guest User

Untitled

a guest
Feb 19th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. 'use strict';
  2.  
  3. const request = require('request');
  4. const fs = require('fs');
  5.  
  6. // fetch binary from `url` and upload to local file using `dest` as destination
  7. const store = (url, dest) => {
  8. return new Promise((resolve, reject) => {
  9. request({
  10. method: 'GET',
  11. url: url,
  12. encoding: null // returns body as Buffer
  13. }).on('error', (e) => {
  14. // something went wrong during fetch avatar.
  15. return reject(e);
  16. }).on('response', (res) => {
  17. if (res.statusCode.toString().slice(0, 1) !== '2') { // server respond with unexpected status code
  18. return reject(new Error(`Unexpected status code ${res.statusCode}`));
  19. }
  20.  
  21. res.pipe(fs.createWriteStream(dest))
  22. .on('error', (e) => {
  23. // something went wrong on writable stream
  24. reject(e);
  25. }).on('finish', () => {
  26. // all data has been flushed
  27. resolve(dest);
  28. });
  29. });
  30. });
  31. };
  32.  
  33.  
  34. module.exports = exports = store;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement