mirror of
https://github.com/balena-io/balena-cli.git
synced 2025-04-12 21:52:56 +00:00
Allow tracking progress of server requests
This commit is contained in:
parent
e52eb75ac8
commit
d3df9bff1a
@ -1,12 +1,15 @@
|
||||
_ = require('lodash')
|
||||
request = require('request')
|
||||
progress = require('request-progress')
|
||||
urlResolve = require('url').resolve
|
||||
async = require('async')
|
||||
connection = require('../../connection/connection')
|
||||
config = require('../config')
|
||||
token = require('../token/token')
|
||||
|
||||
exports.request = (options = {}, callback) ->
|
||||
exports.request = (options = {}, callback, onProgress) ->
|
||||
|
||||
onProgress ?= _.noop
|
||||
|
||||
if not options.url?
|
||||
throw new Error('Missing URL')
|
||||
@ -37,7 +40,10 @@ exports.request = (options = {}, callback) ->
|
||||
_.extend options.headers,
|
||||
'Authorization': "Bearer #{savedToken}"
|
||||
|
||||
request(options, callback)
|
||||
progress(request(options, callback))
|
||||
.on('progress', onProgress)
|
||||
.on('error', callback)
|
||||
.on('end', onProgress)
|
||||
|
||||
(response, body, callback) ->
|
||||
try
|
||||
@ -52,18 +58,19 @@ exports.request = (options = {}, callback) ->
|
||||
|
||||
createFacadeFunction = (method) ->
|
||||
lowerCaseMethod = method.toLowerCase()
|
||||
exports[lowerCaseMethod] = (url, body, callback) ->
|
||||
exports[lowerCaseMethod] = (url, body, callback, onProgress) ->
|
||||
options = {
|
||||
method
|
||||
url
|
||||
}
|
||||
|
||||
if _.isFunction(body)
|
||||
onProgress = callback
|
||||
callback = body
|
||||
else
|
||||
options.json = body
|
||||
|
||||
return exports.request(options, callback)
|
||||
return exports.request(options, callback, onProgress)
|
||||
|
||||
for method in [
|
||||
'GET'
|
||||
|
@ -1,6 +1,7 @@
|
||||
expect = require('chai').expect
|
||||
nock = require('nock')
|
||||
url = require('url')
|
||||
sinon = require('sinon')
|
||||
server = require('./server')
|
||||
config = require('../config')
|
||||
token = require('../token/token')
|
||||
@ -144,13 +145,28 @@ describe 'Server:', ->
|
||||
expect(response.body.status).to.equal(STATUS.ok)
|
||||
done()
|
||||
|
||||
it 'should accept an onProgress function', (done) ->
|
||||
spy = sinon.spy()
|
||||
|
||||
server.request {
|
||||
method: 'GET'
|
||||
url: URI.ok
|
||||
}, (error, response, body) ->
|
||||
expect(error).to.not.exist
|
||||
expect(spy).to.have.been.called
|
||||
done()
|
||||
, spy
|
||||
|
||||
checkRequestTypeWithoutBody = (type) ->
|
||||
return (done) ->
|
||||
spy = sinon.spy()
|
||||
lowercaseType = type.toLowerCase()
|
||||
server[lowercaseType] URI.ok, (error, response) ->
|
||||
return done(error) if error?
|
||||
expect(response.request.method).to.equal(type)
|
||||
expect(spy).to.have.been.called
|
||||
done()
|
||||
, spy
|
||||
|
||||
describe '#get()', ->
|
||||
it('should be a facade to request()', checkRequestTypeWithoutBody('GET'))
|
||||
@ -163,11 +179,14 @@ describe 'Server:', ->
|
||||
|
||||
checkRequestTypeWithBody = (type, body) ->
|
||||
return (done) ->
|
||||
spy = sinon.spy()
|
||||
lowercaseType = type.toLowerCase()
|
||||
server[lowercaseType] URI.ok, body, (error, response) ->
|
||||
return done(error) if error?
|
||||
expect(response.request.method).to.equal(type)
|
||||
expect(spy).to.have.been.called
|
||||
done()
|
||||
, spy
|
||||
|
||||
describe '#post()', ->
|
||||
it('should be a facade to request()', checkRequestTypeWithBody('POST', { hello: 'world' }))
|
||||
|
@ -51,6 +51,7 @@
|
||||
"is-online": "~3.0.0",
|
||||
"pluralize": "~1.1.0",
|
||||
"indefinite-article": "0.0.2",
|
||||
"pubnub": "~3.7.0"
|
||||
"pubnub": "~3.7.0",
|
||||
"request-progress": "~0.3.1"
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user