UNPKG

nanocyte-configuration-generator

Version:
32 lines (25 loc) 937 B
_ = require 'lodash' request = require 'request' class NodeRegistryDownloader constructor: -> @cached = false @etag = null @data = null @_checkEtag = _.throttle @_checkEtagImmediately, 60*1000*5, leading: true, trailing: false setOptions: ({@registryUrl}) => update: (callback) => @_checkEtag() return callback null, @data if @cached request.get @registryUrl, json: true, (error, response, @data) => return callback error if error? return callback new Error "invalid response code: #{response.statusCode}" if response.statusCode > 300 @etag = response.headers.etag @cached = true callback null, @data _checkEtagImmediately: => request.head @registryUrl, json: true, (error, response) => return if error? return if @etag == response.headers.etag @etag = response.headers.etag @cached = false module.exports = NodeRegistryDownloader