diff options
Diffstat (limited to 'lib/img.js')
-rw-r--r-- | lib/img.js | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/lib/img.js b/lib/img.js new file mode 100644 index 0000000..fe1a606 --- /dev/null +++ b/lib/img.js @@ -0,0 +1,80 @@ +// ======================================================================== +// bootstrap-server v1.0.0 +// http://twitter.github.com/bootstrap +// ======================================================================== +// Copyright 2012 Twitter, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ======================================================================== + +"use strict" + +var path = require('path') + , https = require('https') + , CACHE = {} + , FILES = [ 'glyphicons-halflings.png' + , 'glyphicons-halflings-white.png' ] + +function cache(callback) { + var _cache = {} + , complete = 0 + + FILES.forEach(function (filename) { + var req + , res + , i = 0 + , content = [] + , options = { + host: 'raw.github.com' + , port: 443 + , path: path.join('/twitter/bootstrap/master/img/', filename) + , method: 'GET' + } + + req = https.request(options, function(res) { + + var buffer = new Buffer(parseInt(res.header('Content-Length'))) + + res.setEncoding('binary') + + res.on('data', function (chunk) { + buffer.write(chunk, i, 'binary') + i += chunk.length + }) + + res.on('end', function () { + _cache[filename] = buffer + if (++complete == FILES.length) { + CACHE = _cache + callback && callback(null, CACHE) + } + }) + + }) + + req.end() + }) + +} + +function img(params, callback) { + var contents = {} + params.img.forEach(function (filename) { + contents['img/' + filename] = CACHE[filename] + }) + callback(null, contents) +} + +module.exports = img +module.exports.cache = cache +module.exports.FILES = FILES |