ant/web/bower_components/qiniu-js-sdk/demo/server.js

78 lines
2.0 KiB
JavaScript

var qiniu = require('qiniu');
var express = require('express');
var config = require('./config.js');
var app = express();
app.configure(function() {
app.use(express.static(__dirname + '/'));
});
app.set('views', __dirname + '/views');
app.engine('html', require('ejs').renderFile);
app.use(express.urlencoded());
app.get('/uptoken', function(req, res, next) {
var token = uptoken.token();
res.header("Cache-Control", "max-age=0, private, must-revalidate");
res.header("Pragma", "no-cache");
res.header("Expires", 0);
if (token) {
res.json({
uptoken: token
});
}
});
app.post('/downtoken', function(req, res) {
var key = req.body.key,
domain = req.body.domain;
//trim 'http://'
if (domain.indexOf('http://') != -1) {
domain = domain.substr(7);
}
//trim 'https://'
if (domain.indexOf('https://') != -1) {
domain = domain.substr(8);
}
//trim '/' if the domain's last char is '/'
if (domain.lastIndexOf('/') === domain.length - 1) {
domain = domain.substr(0, domain.length - 1);
}
var baseUrl = qiniu.rs.makeBaseUrl(domain, key);
var deadline = 3600 + Math.floor(Date.now() / 1000);
baseUrl += '?e=' + deadline;
var signature = qiniu.util.hmacSha1(baseUrl, config.SECRET_KEY);
var encodedSign = qiniu.util.base64ToUrlSafe(signature);
var downloadToken = config.ACCESS_KEY + ':' + encodedSign;
if (downloadToken) {
res.json({
downtoken: downloadToken,
url: baseUrl + '&token=' + downloadToken
})
}
});
app.get('/', function(req, res) {
res.render('index.html', {
domain: config.Domain,
uptoken_url: config.Uptoken_Url
});
});
qiniu.conf.ACCESS_KEY = config.ACCESS_KEY;
qiniu.conf.SECRET_KEY = config.SECRET_KEY;
var uptoken = new qiniu.rs.PutPolicy(config.Bucket_Name);
app.listen(config.Port, function() {
console.log('Listening on port %d', config.Port);
});