fkc
Version:
FKC application service framework.
44 lines • 1.5 kB
JavaScript
;
const {isFile} = require('../fs');
const stream = require('../use/stream');
const {ctxs,error,body,json,fileType,fileName} = require('../util');
module.exports = async(req,res,ctx,use)=> {
for (let i = 0;i < use.length;i++) {
try {
await use[i](ctx);
ctx = await ctxs(req,ctx);
if(ctx.json){
json(res,ctx.json);
return;
}
if(ctx.res){
if(ctx.res.cookie) {
res.setHeader("Set-Cookie",ctx.res.cookie);
delete ctx.res.cookie;
}
if(ctx.res.file&&isFile(ctx.res.file)){
stream(req,res,fileName(ctx.res.file));
return;
}
if(ctx.res.static&&isFile(ctx.res.static)){
stream(req,res,fileType(ctx.res.static));
return;
}
if(ctx.res.body){
body(res,{
data:ctx.res.body,
type:ctx.res.type||'txt',
status:ctx.res.status||200,
charset:ctx.res.charset||'utf-8'
});
return;
}
}
if(req.fkc.stop===0) return 1;
} catch (e) {
error(res,e.name+':'+e.message);
return;
}
};
return true;
}