async/await
This commit is contained in:
		@@ -5,19 +5,18 @@ export let admins = [];
 | 
			
		||||
export const loadAdmins = async () => {
 | 
			
		||||
  const db = await sql;
 | 
			
		||||
  admins = [];
 | 
			
		||||
  db.query(`select * from user`)
 | 
			
		||||
    .then(rows => rows.forEach(row => {
 | 
			
		||||
      admins.push({
 | 
			
		||||
        id: row.id,
 | 
			
		||||
        prefix: row.prefix,
 | 
			
		||||
        account: row.account,
 | 
			
		||||
        network: row.network,
 | 
			
		||||
        level: row.level
 | 
			
		||||
      });
 | 
			
		||||
    }))
 | 
			
		||||
    .catch(err => {
 | 
			
		||||
      console.log("keine Admins vorhanden", err);
 | 
			
		||||
    });
 | 
			
		||||
  try {
 | 
			
		||||
    const rows = await db.query("select id, prefix, account, level, network from user");
 | 
			
		||||
    rows.forEach(row => admins.push({
 | 
			
		||||
      id: row.id,
 | 
			
		||||
      prefix: row.prefix,
 | 
			
		||||
      account: row.account,
 | 
			
		||||
      network: row.network,
 | 
			
		||||
      level: row.level
 | 
			
		||||
    }));
 | 
			
		||||
  } catch(err) {
 | 
			
		||||
    console.log("keine Admins vorhanden", err);
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
(async () => {
 | 
			
		||||
 
 | 
			
		||||
@@ -10,11 +10,9 @@ router.get(/^\/api$/, (req, res) => {
 | 
			
		||||
 | 
			
		||||
router.get(/^\/api\/random(\/user\/.+|\/image|\/video|\/audio)?$/, async (req, res) => {
 | 
			
		||||
  const db = await sql;
 | 
			
		||||
  const args = [];
 | 
			
		||||
  let q = queries.random.main;
 | 
			
		||||
  let args = [];
 | 
			
		||||
  
 | 
			
		||||
  res.writeHead(200, { 'Content-Type': 'text/html' });
 | 
			
		||||
 | 
			
		||||
  if(req.url.split[2] === "user") {
 | 
			
		||||
    q += queries.random.where("username like ?");
 | 
			
		||||
    args.push(req.url.split[3] || "flummi");
 | 
			
		||||
@@ -22,59 +20,76 @@ router.get(/^\/api\/random(\/user\/.+|\/image|\/video|\/audio)?$/, async (req, r
 | 
			
		||||
  else
 | 
			
		||||
    q += queries.random.where(mimes[req.url.split[2]] ? mimes[req.url.split[2]].map(mime => `mime = "${mime}"`).join(" or ") : null);
 | 
			
		||||
 | 
			
		||||
  db.query(q, args)
 | 
			
		||||
    .then(rows => {
 | 
			
		||||
      res.end(JSON.stringify(rows.length > 0 ? rows[0] : []), 'utf-8');
 | 
			
		||||
    }).catch(err => res.end(JSON.stringify( err ), 'utf-8'));
 | 
			
		||||
  try {
 | 
			
		||||
    const rows = await db.query(q, args);
 | 
			
		||||
    res
 | 
			
		||||
      .writeHead(200, { 'Content-Type': 'application/json' })
 | 
			
		||||
      .end(JSON.stringify(rows.length > 0 ? rows[0] : []), 'utf-8');
 | 
			
		||||
  } catch(err) {
 | 
			
		||||
    res
 | 
			
		||||
      .writeHead(500)
 | 
			
		||||
      .end(JSON.stringify(err), 'utf-8');
 | 
			
		||||
  }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
//router.get(/^\/api\/p(\/[0-9]+|\/)?(\/[0-9]+)?$/, async (req, res) => {
 | 
			
		||||
router.get(/^\/api\/p$/, async (req, res) => {
 | 
			
		||||
  const db = await sql;
 | 
			
		||||
  const id = parseInt(req.url.qs.id) || 99999999;
 | 
			
		||||
  const eps = Math.min(parseInt(req.url.qs.eps) || 100, 200);
 | 
			
		||||
  db.query("select * from f0ck.items where id < ? order by id desc limit ?", [id, eps])
 | 
			
		||||
    .then(rows => {
 | 
			
		||||
      let items = {
 | 
			
		||||
        "items": [],
 | 
			
		||||
        "last": id
 | 
			
		||||
      };
 | 
			
		||||
      rows.forEach(e => {
 | 
			
		||||
        items.items.push({
 | 
			
		||||
          "id": e.id,
 | 
			
		||||
          "mime": e.mime
 | 
			
		||||
        });
 | 
			
		||||
        items.last = e.id;
 | 
			
		||||
      });
 | 
			
		||||
      res.writeHead(200, { 'Content-Type': 'text/html' });
 | 
			
		||||
      res.end(JSON.stringify(items), 'utf-8');
 | 
			
		||||
    }).catch(err => res.end(JSON.stringify( err ), 'utf-8'));
 | 
			
		||||
  const [ order, trend ] = req.url.qs.order === "asc" ? [ "asc", ">" ] : [ "desc", "<" ];
 | 
			
		||||
 | 
			
		||||
  try {
 | 
			
		||||
    const rows = await db.query(`select id, mime from f0ck.items where id ${trend} ? order by id ${order} limit ?`, [ id, eps ]);
 | 
			
		||||
    const items = {
 | 
			
		||||
      items: rows,
 | 
			
		||||
      first: rows[0].id,
 | 
			
		||||
      last: rows[rows.length - 1].id
 | 
			
		||||
    };
 | 
			
		||||
    res
 | 
			
		||||
      .writeHead(200, { 'Content-Type': 'application/json' })
 | 
			
		||||
      .end(JSON.stringify(items), 'utf-8');
 | 
			
		||||
  } catch(err) {
 | 
			
		||||
    res
 | 
			
		||||
      .writeHead(500)
 | 
			
		||||
      .end(JSON.stringify(err), 'utf-8');
 | 
			
		||||
  }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
router.get(/^\/api\/item\/[0-9]+$/, async (req, res) => {
 | 
			
		||||
  const db = await sql;
 | 
			
		||||
  db.query(queries.item, Array(3).fill(req.url.split[2]))
 | 
			
		||||
    .then(rows => {
 | 
			
		||||
      const data = rows[0].length > 0 ? {
 | 
			
		||||
        ...rows[0][0], ...{
 | 
			
		||||
          thumb: `${cfg.main.url}/t/${rows[0][0].id}.png`,
 | 
			
		||||
          next: rows[1].length ? rows[1][0].id : null,
 | 
			
		||||
          prev: rows[2].length ? rows[2][0].id : null,
 | 
			
		||||
        }
 | 
			
		||||
      } : {
 | 
			
		||||
        error: true
 | 
			
		||||
      };
 | 
			
		||||
      res.writeHead(200, { 'Content-Type': 'text/html' });
 | 
			
		||||
      res.end(JSON.stringify(data), 'utf-8');
 | 
			
		||||
    }).catch(err => res.end(JSON.stringify( err ), 'utf-8'));
 | 
			
		||||
  try {
 | 
			
		||||
    const rows = await db.query(queries.item, Array(3).fill(req.url.split[2]));
 | 
			
		||||
    const data = rows[0].length > 0 ? {
 | 
			
		||||
      ...rows[0][0], ...{
 | 
			
		||||
        thumb: `${cfg.main.url}/t/${rows[0][0].id}.png`,
 | 
			
		||||
        next: rows[1].length ? rows[1][0].id : null,
 | 
			
		||||
        prev: rows[2].length ? rows[2][0].id : null,
 | 
			
		||||
      }
 | 
			
		||||
    } : {
 | 
			
		||||
      error: true
 | 
			
		||||
    };
 | 
			
		||||
    res
 | 
			
		||||
      .writeHead(200, { 'Content-Type': 'application/json' })
 | 
			
		||||
      .end(JSON.stringify(data), 'utf-8');
 | 
			
		||||
  } catch(err) {
 | 
			
		||||
    res
 | 
			
		||||
      .writeHead(500)
 | 
			
		||||
      .end(JSON.stringify(err), 'utf-8');
 | 
			
		||||
  }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
router.get(/^\/api\/user\/.*(\/[0-9]+)?$/, async (req, res) => {
 | 
			
		||||
router.get(/^\/api\/user\/.*(\/[0-9]+)?$/, async (req, res) => { // auf qs umstellen
 | 
			
		||||
  const db = await sql;
 | 
			
		||||
  const user = req.url.split[2];
 | 
			
		||||
  const eps = Math.min(req.url.split[3] || 50, 50);
 | 
			
		||||
  db.query(queries.user, [ user, eps ])
 | 
			
		||||
    .then(rows => {
 | 
			
		||||
      res.end(JSON.stringify(rows.length > 0 ? rows : []), 'utf-8');
 | 
			
		||||
    }).catch(err => res.end(JSON.stringify( err ), 'utf-8'));
 | 
			
		||||
  try {
 | 
			
		||||
    const rows = await db.query(queries.user, [ user, eps ]);
 | 
			
		||||
    res
 | 
			
		||||
      .writeHead(200, { 'Content-Type': 'application/json' })
 | 
			
		||||
      .end(JSON.stringify(rows.length > 0 ? rows : []), 'utf-8');
 | 
			
		||||
  } catch(err) {
 | 
			
		||||
    res
 | 
			
		||||
      .writeHead(500)
 | 
			
		||||
      .end(JSON.stringify(err), 'utf-8');
 | 
			
		||||
  }
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -9,14 +9,16 @@ const template = fs.readFileSync("./views/index.hbs", "utf-8");
 | 
			
		||||
 | 
			
		||||
router.get(/^\/$/, async (req, res) => {
 | 
			
		||||
  const db = await sql;
 | 
			
		||||
  res.writeHead(200, { 'Content-Type': 'text/html' });
 | 
			
		||||
 | 
			
		||||
  db.query(queries.items)
 | 
			
		||||
    .then(items => {
 | 
			
		||||
      const tpl = handlebars.compile(template);
 | 
			
		||||
      res.end(tpl({ items: items, debug: JSON.stringify(req.url, null, 2) }));
 | 
			
		||||
    }).catch(err => res.end(JSON.stringify( err ), 'utf-8'));
 | 
			
		||||
 | 
			
		||||
  /*const tpl = handlebars.compile(template);
 | 
			
		||||
  res.end(tpl());*/
 | 
			
		||||
  try {
 | 
			
		||||
    const rows = await db.query(queries.items);
 | 
			
		||||
    const tpl = handlebars.compile(template);
 | 
			
		||||
    res
 | 
			
		||||
      .writeHead(200, { 'Content-Type': 'text/html' })
 | 
			
		||||
      .end(tpl({ items: rows, debug: JSON.stringify(req.url, null, 2) }));
 | 
			
		||||
  } catch(err) {
 | 
			
		||||
    res
 | 
			
		||||
      .writeHead(500)
 | 
			
		||||
      .end(JSON.stringify(err), 'utf-8');
 | 
			
		||||
  }
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -16,5 +16,5 @@ http.createServer((req, res, r) => {
 | 
			
		||||
 | 
			
		||||
  console.log(`[${(new Date()).toLocaleTimeString()}] ${req.method} ${req.url.pathname}`);
 | 
			
		||||
 | 
			
		||||
  !(r = routes.getRegex(req.url.pathname, req.method)) ? res.end(`404 - ${req.url.pathname}`) : r(req, res);
 | 
			
		||||
  !(r = routes.getRegex(req.url.pathname, req.method)) ? res.writeHead(404).end(`404 - ${req.url.pathname}`) : r(req, res);
 | 
			
		||||
}).listen(cfg.websrv.port, () => console.log(`f0ck is listening on port ${cfg.websrv.port}.`));
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user