flyio
Version:
Lightweigh Promise based HTTP client for the browser and node.js
44 lines (39 loc) • 1.37 kB
JavaScript
let Fly = require("../../dist/npm/fly")
let EngineWrapper = require("../../dist/npm/engine-wrapper")
let adapter = require("../adapter/node")
let utils = require("../utils/utils")
let nodeEngine = EngineWrapper(adapter)
let fs = require("fs")
let path= require("path")
let request=require("request")
let rq = request.defaults({jar: true})
Object.assign(Fly.prototype,{
// Http plugin
"$http":rq ,
// File download API
download(url, savePath, params = null,options) {
return this.request(url, params,utils.merge({responseType: "stream"},options))
.then(d => {
return new Promise((resolve,reject)=> {
fs.writeFile(savePath, d.data,(err)=>{
if(!err) {
resolve({size:d.data.length,path:path.resolve(savePath)})
}else{
// Failed to save file
err.status=2
reject(err)
}
})
})
}).catch(e=>{
return Promise.reject(e)
})
},
// File upload API
upload(url,formData,options) {
return this.post(url,null,utils.merge({formData},options))
}
})
module.exports = function (engine) {
return new Fly(engine||nodeEngine)
}