Completely decouple client code from server module

This commit is contained in:
Juan Cruz Viotti 2014-12-22 15:40:57 -04:00
parent aeafd23e43
commit 1b9c62a50f
4 changed files with 32 additions and 31 deletions

View File

@ -2,14 +2,14 @@ _ = require('lodash')
async = require('async')
path = require('path')
mkdirp = require('mkdirp')
url = require('url')
ProgressBar = require('progress')
resin = require('../resin')
connection = require('../connection/connection')
ui = require('../ui')
log = require('../log/log')
permissions = require('../permissions/permissions')
errors = require('../errors/errors')
cache = require('../cache/cache')
resin = require('../resin')
exports.download = (params, options) ->
networkParams =
@ -34,13 +34,22 @@ exports.download = (params, options) ->
(parameters, callback) ->
parameters.appId = params.id
query = url.format(query: parameters)
downloadUrl = url.resolve(resin.settings.get('urls.download'), query)
bar = null
received = 0
return callback(null, downloadUrl)
resin.models.os.download parameters, outputFile, callback, (state) ->
(downloadUrl, callback) ->
ui.patterns.downloadFile(downloadUrl, outputFile, callback)
# TODO: Allow quieting this progress bar
bar ?= new ProgressBar 'Downloading device OS [:bar] :percent :etas',
complete: '='
incomplete: ' '
width: 40
total: state.total
return if bar.complete or not state?
bar.tick(state.received - received)
received = state.received
], (error) ->
errors.handle(error) if error?

View File

@ -3,3 +3,4 @@ module.exports =
device: require('./device')
key: require('./key')
environmentVariables: require('./environment-variables')
os: require('./os')

View File

@ -0,0 +1,15 @@
url = require('url')
fs = require('fs')
server = require('../server/server')
settings = require('../settings')
exports.download = (parameters, destination, callback, onProgress) ->
query = url.format(query: parameters)
downloadUrl = url.resolve(settings.get('urls.download'), query)
server.request
method: 'GET'
url: downloadUrl
pipe: fs.createWriteStream(destination)
, callback
, onProgress

View File

@ -18,27 +18,3 @@ exports.remove = (name, confirmAttribute, deleteFunction, outerCallback) ->
deleteFunction(callback)
], outerCallback)
exports.downloadFile = (url, dest, callback) ->
bar = null
received = 0
resin.server.request
method: 'GET'
url: url
pipe: fs.createWriteStream(dest)
, (error) ->
return callback(error)
, (state) ->
# TODO: Allow quieting this progress bar
bar ?= new ProgressBar 'Downloading device OS [:bar] :percent :etas',
complete: '='
incomplete: ' '
width: 40
total: state.total
return if bar.complete or not state?
bar.tick(state.received - received)
received = state.received