'use strict'; const request = require('superagent'); // const parse = require('async-busboy'); // const path = require('path') // const fs = require('fs'); const ext = { project: [".txt", ".dwg", ".doc", ".docx", ".xls", ".xlsx", ".pdf", ".png", ".jpg", ".svg"], report: [".doc", ".docx", ".xls", ".xlsx", ".pdf"], data: [".txt", ".xls", ".xlsx"], image: [".png", ".jpg", ".svg"], three: [".js"], video: [".mp4"], bpmn: [".bpmn", ".bpmn20.xml", ".zip", ".bar"], app: [".apk"] } module.exports = { entry: function (app, router, opts) { const getApiRoot = async function (ctx) { const { apiUrl, iotVcmpWeb } = opts; ctx.status = 200; ctx.body = { root: apiUrl, iotVcmpWeb: iotVcmpWeb, }; }; let download = async function (ctx, next) { const { fetchUrl } = opts.qiniu; if (ctx.path && ctx.path.includes(fetchUrl)) { try { const { filename } = ctx.request.query; const fkey = decodeURI(ctx.path.slice(fetchUrl.length + 1)).replace(/\.json$/, '.js'); const publicDownloadUrl = await app.fs.attachment.download(fkey); ctx.status = 200; if (filename) ctx.attachment(filename); ctx.body = request.get(publicDownloadUrl); } catch (err) { ctx.fs.logger.error(err); ctx.status = 404; ctx.body = { error: 'file not found.' } } } else { await next(); } } router.use(download); router.get('/api/root', getApiRoot); } };