Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap-server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'index.js')
-rw-r--r--index.js78
1 files changed, 78 insertions, 0 deletions
diff --git a/index.js b/index.js
new file mode 100644
index 0000000..57632d3
--- /dev/null
+++ b/index.js
@@ -0,0 +1,78 @@
+// ========================================================================
+// 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 express = require('express')
+ , zip = require('node-native-zip')
+ , app = express.createServer()
+ , types = {}
+
+types.img = require('./lib/img')
+types.js = require('./lib/js')
+types.css = require('./lib/css')
+
+app.use(express.bodyParser());
+
+function refreshCache() {
+ Object.keys(types).forEach(function (type) {
+ types[type].cache()
+ })
+}
+
+refreshCache()
+setInterval(refreshCache, 1000 * 60 * 60 * 2)
+
+
+// API args:
+// + js = array
+// + css = array
+// + img = array
+// + vars = obj
+
+app.get('/', function (req, res) {
+ res.send('Bootstrap Server - w/cache. <3');
+})
+
+app.post('/', function(req, res) {
+ var dist = []
+ , started = 0
+ , params = {}
+ , archive = new zip()
+
+ params.js = req.body.js && JSON.parse(req.body.js)
+ params.css = req.body.css && JSON.parse(req.body.css)
+ params.img = req.body.img && JSON.parse(req.body.img)
+ params.vars = req.body.vars && JSON.parse(req.body.vars)
+
+ Object.keys(types).forEach(function (type) {
+ if (!params[type] || !params[type].length) return
+ types[type](params, complete)
+ })
+
+ function complete (err, files) {
+ for (var i in files) archive.add(i, files[i])
+ }
+
+ res.attachment('bootstrap.zip')
+ res.send(archive.toBuffer())
+})
+
+app.listen(process.env.PORT || 3000)