import * as fs from 'fs-extra';
import * as path from 'path';
import log from '../util/LogUtil';

async function addMapping(router, filePath: string) {
  let mapping = require(filePath).default;
  for (let url in mapping) {
    if (url.startsWith('GET ')) {
      let temp = url.substring(4);
      router.get(temp, mapping[url]);
      log.info(`----GET：${temp}`);
    } else if (url.startsWith('POST ')) {
      let temp = url.substring(5);
      router.post(temp, mapping[url]);
      log.info(`----POST：${temp}`);
    } else if (url.startsWith('PUT ')) {
      let temp = url.substring(4);
      router.put(temp, mapping[url]);
      log.info(`----PUT：${temp}`);
    } else if (url.startsWith('DELETE ')) {
      let temp = url.substring(7);
      router.delete(temp, mapping[url]);
      log.info(`----DELETE: ${temp}`);
    } else {
      log.info(`xxxxx无效路径：${url}`);
    }
  }
}

function addControllers(router, filePath) {
  let files = fs.readdirSync(filePath).filter(item => item.endsWith('.js'));
  for (let index in files) {
    let element = files[index];
    let temp = path.join(filePath, element);
    let state = fs.statSync(temp);
    if (state.isDirectory()) {
      addControllers(router, temp);
    } else {
      if (!temp.endsWith('Helper.js')) {
        log.info('\n--开始处理: ' + element + '路由');
        addMapping(router, temp);
      }
    }
  }
}

export default function engine(router, folder) {
  addControllers(router, folder);
  return router.routes();
}
