|
@@ -1,11 +1,12 @@
|
|
|
|
+'use strict'
|
|
const query = require("querystring");
|
|
const query = require("querystring");
|
|
const base64 = require('js-base64').Base64;
|
|
const base64 = require('js-base64').Base64;
|
|
|
|
|
|
var API = {
|
|
var API = {
|
|
parse:function(req,res){
|
|
parse:function(req,res){
|
|
- var url = req.url;
|
|
|
|
- var URLParse = URL.parse(url,true);
|
|
|
|
- var URLArr = URLParse.pathname.split('/');
|
|
|
|
|
|
+ let url = req.url;
|
|
|
|
+ let URLParse = URL.parse(url,true);
|
|
|
|
+ let URLArr = URLParse.pathname.split('/');
|
|
//Only GET
|
|
//Only GET
|
|
req.param = URLParse.query;
|
|
req.param = URLParse.query;
|
|
// console.log(URLParse.query);
|
|
// console.log(URLParse.query);
|
|
@@ -30,10 +31,12 @@ var API = {
|
|
if(req.param['key'] && req.param['key']!='' && req.param['url'] && req.param['url']!=''){
|
|
if(req.param['key'] && req.param['key']!='' && req.param['url'] && req.param['url']!=''){
|
|
UserDB.findOne({key:req.param['key']},function(err,data){
|
|
UserDB.findOne({key:req.param['key']},function(err,data){
|
|
if(!err && data){
|
|
if(!err && data){
|
|
- var oldLink = req.param['url'];
|
|
|
|
|
|
+ let oldLink = req.param['url'];
|
|
|
|
+ let qr = 0;
|
|
|
|
+ if(req.param['qr'] && Number(req.param['qr'])==1) qr = 1;
|
|
if(req.param['base64'] && req.param['base64']==0){
|
|
if(req.param['base64'] && req.param['base64']==0){
|
|
if(oldLink.match(/http(s)?:\/\//)){
|
|
if(oldLink.match(/http(s)?:\/\//)){
|
|
- MongoHandler.getlink(req.param['key'],oldLink,res);
|
|
|
|
|
|
+ MongoHandler.getlink(req.param['key'],oldLink,res,qr);
|
|
}else{
|
|
}else{
|
|
API._onError(ErrorMsg.URL_WRONG,res);
|
|
API._onError(ErrorMsg.URL_WRONG,res);
|
|
return;
|
|
return;
|
|
@@ -41,7 +44,7 @@ var API = {
|
|
}else{
|
|
}else{
|
|
oldLink = base64.decode(oldLink);
|
|
oldLink = base64.decode(oldLink);
|
|
if(oldLink.match(/http(s)?:\/\//)){
|
|
if(oldLink.match(/http(s)?:\/\//)){
|
|
- MongoHandler.getlink(req.param['key'],oldLink,res);
|
|
|
|
|
|
+ MongoHandler.getlink(req.param['key'],oldLink,res,qr);
|
|
}else{
|
|
}else{
|
|
API._onError(ErrorMsg.URL_WRONG,res);
|
|
API._onError(ErrorMsg.URL_WRONG,res);
|
|
return;
|
|
return;
|
|
@@ -78,24 +81,26 @@ var API = {
|
|
}
|
|
}
|
|
|
|
|
|
var MongoHandler = {
|
|
var MongoHandler = {
|
|
- getlink:function(key,url,res){
|
|
|
|
- var baseLink;
|
|
|
|
|
|
+ getlink:function(key,url,res,qr){
|
|
|
|
+ let baseLink;
|
|
baseLink = base64.encode(url);
|
|
baseLink = base64.encode(url);
|
|
// console.log(baseLink,newLink);
|
|
// console.log(baseLink,newLink);
|
|
LinkDB.findOne({long:baseLink},function(err,oldOne){
|
|
LinkDB.findOne({long:baseLink},function(err,oldOne){
|
|
if(!err){
|
|
if(!err){
|
|
- var data = {success:1,msg:'',short:'http://l2s.ch/',long:url};
|
|
|
|
|
|
+ let data = {success:1,msg:'',short:SystemURL,long:url};
|
|
if(oldOne){
|
|
if(oldOne){
|
|
data.short += oldOne.short;
|
|
data.short += oldOne.short;
|
|
|
|
+ if(qr) data.qr = SystemURL+'static/qrs'+QRHandler.getQR(oldOne.short);
|
|
res.writeHead(200, {'Content-Type': 'text/json','Access-Control-Allow-Origin':'*'});
|
|
res.writeHead(200, {'Content-Type': 'text/json','Access-Control-Allow-Origin':'*'});
|
|
res.write(JSON.stringify(data));
|
|
res.write(JSON.stringify(data));
|
|
res.end();
|
|
res.end();
|
|
}else{
|
|
}else{
|
|
- var newLink,count = COUNT.link+1;
|
|
|
|
|
|
+ let newLink,count = COUNT.link+1;
|
|
newLink = count.toString(36);
|
|
newLink = count.toString(36);
|
|
LinkDB.update({key:key,long:baseLink},{$set:{short:newLink}},{upsert:true},function(err,result){
|
|
LinkDB.update({key:key,long:baseLink},{$set:{short:newLink}},{upsert:true},function(err,result){
|
|
if(!err && result){
|
|
if(!err && result){
|
|
data.short += newLink;
|
|
data.short += newLink;
|
|
|
|
+ if(qr) data.qr = SystemURL+'static/qrs'+QRHandler.getQR(newLink);
|
|
res.writeHead(200, {'Content-Type': 'text/json','Access-Control-Allow-Origin':'*'});
|
|
res.writeHead(200, {'Content-Type': 'text/json','Access-Control-Allow-Origin':'*'});
|
|
res.write(JSON.stringify(data));
|
|
res.write(JSON.stringify(data));
|
|
res.end();
|
|
res.end();
|
|
@@ -113,6 +118,18 @@ var MongoHandler = {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+var QRHandler = {
|
|
|
|
+ getQR:function(tagName){
|
|
|
|
+ let qrImgPath = '/'+tagName+'.png';
|
|
|
|
+ if(!FILE.exists(QRPATH+qrImgPath)){
|
|
|
|
+ let qr = new QR({value:SystemURL+'/'+tagName});
|
|
|
|
+ let qrData = qr.toDataURL().replace(/^data:image\/\w+;base64,/, "");
|
|
|
|
+ FILE.writeFileSync(QRPATH+qrImgPath,new Buffer(qrData, 'base64'),'binary');
|
|
|
|
+ }
|
|
|
|
+ return qrImgPath;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
const ErrorMsg = {
|
|
const ErrorMsg = {
|
|
NONE:'',
|
|
NONE:'',
|
|
KEY_LOST :'Key is missing',
|
|
KEY_LOST :'Key is missing',
|