import Koa, { DefaultState } from 'koa'; import Router, { IParamMiddleware, IRouterParamContext } from 'koa-router'; import {get_setting} from './setting'; import {connectDB} from './database'; import {Watcher} from './diff' import { createReadStream, readFileSync } from 'fs'; import getContentRouter from './route/contents'; import { createKnexContentsAccessor } from './db/contents'; import bodyparser from 'koa-bodyparser'; import {error_handler} from './route/error_handler'; import {MangaManager,MangaReferrer} from './content/manga' import { ContentContext } from './content/manager'; import { Context } from 'vm'; import { VideoManager } from './content/video'; //let Koa = require("koa"); async function main(){ let app = new Koa(); app.use(bodyparser()); app.use(error_handler); let router = new Router(); let settings = get_setting(); let db = await connectDB(); let watcher = new Watcher(settings.path[0]); await watcher.setup([]); console.log(settings); router.get('/', async (ctx,next)=>{ ctx.type = "html"; ctx.body = readFileSync("index.html"); }); router.get('/dist/css/style.css',async (ctx,next)=>{ ctx.type = "css"; ctx.body = createReadStream("dist/css/style.css"); }); router.get('/dist/js/bundle.js',async (ctx,next)=>{ ctx.type = "js"; ctx.body = createReadStream("dist/js/bundle.js"); }); router.get('/get' ,async (ctx,next)=>{ ctx.body = ctx.query; console.log(JSON.stringify(ctx.query)); await next(); } ); let content_router = getContentRouter(createKnexContentsAccessor(db)); router.use('/content',content_router.routes()); router.use('/content',content_router.allowedMethods()); let manga_manager = new MangaManager(); let video_manager = new VideoManager(); router.use('/image', async (ctx,next)=>{ ctx.state['content'] = await manga_manager.createContent("testdata/test_zip.zip"); await next(); }); let rr = manga_manager.getRouter(); rr.prefix("/image"); router.use('/image',(ctx,next)=>{ console.log("asdf"); rr.routes()(ctx,next); }); router.use('/ss.mp4', async (ctx,next)=>{ ctx.state['content'] = await video_manager.createContent("testdata/video_test.mp4"); await next(); }); router.use('/ss.mp4',video_manager.getRouter().routes()); let mm_count=0; app.use(async (ctx,next)=>{ console.log(`==========================${mm_count++}`); console.log(`connect ${ctx.ip} : ${ctx.method} ${ctx.url}`); await next(); //console.log(`404`); }); app.use(router.routes()); app.use(router.allowedMethods()); console.log("log"); app.listen(3002); return app; } main();