parent
42d2a4a78c
commit
a86e8a5667
9 changed files with 161 additions and 63 deletions
59
src/app.ts
59
src/app.ts
|
@ -2,13 +2,13 @@ import * as config from "./config";
|
|||
import * as requests from "./requests";
|
||||
import * as twitch from "./twitch";
|
||||
import * as queries from "./queries";
|
||||
import { log, LogLevel } from "./logging"
|
||||
import { URLSearchParams } from "url";
|
||||
import express from "express";
|
||||
import session from "express-session";
|
||||
import pg from "pg";
|
||||
import pgSessionStore from "connect-pg-simple";
|
||||
import fetch, { Response as FetchResponse } from "node-fetch";
|
||||
import cron from "./cron";
|
||||
import db from "./db";
|
||||
import errorHandler from "./errors";
|
||||
import * as version from "./version";
|
||||
|
@ -332,61 +332,12 @@ app.get("/", async (request, response) => {
|
|||
//});
|
||||
|
||||
// Logout
|
||||
app.get("/logout", async (request, response) => request.session!.destroy(() => response.redirect(307, '/')));
|
||||
|
||||
async function processBannedUsers() {
|
||||
log(LogLevel.INFO,"processBannedUsers run at " + new Date().toISOString());
|
||||
var streamer = await db.query(queries.getStreamerIdToken).then((result: pg.QueryResult) => result.rows[0]);
|
||||
if (typeof streamer == 'undefined') return;
|
||||
var response = await twitch.streamerApiRequest("/moderation/banned?broadcaster_id=" + streamer['userid']);
|
||||
var dbconn = await db.connect();
|
||||
try {
|
||||
await dbconn.query('BEGIN');
|
||||
dbconn.query("DELETE FROM bans");
|
||||
log(LogLevel.DEBUG,"Ban list:")
|
||||
log(LogLevel.DEBUG,JSON.stringify(response.data,null,2));
|
||||
var insertBanQuery = "INSERT INTO bans (userid) VALUES ";
|
||||
var banRow = 0;
|
||||
var bansArray: number[] = [];
|
||||
for (var ban of response.data) {
|
||||
if (ban.expires_at == '') {
|
||||
banRow++;
|
||||
insertBanQuery += `($${banRow}), `;
|
||||
bansArray.push(ban.user_id as number);
|
||||
}
|
||||
}
|
||||
var banQueryConfig = {
|
||||
text: insertBanQuery.slice(0,-2), // Cut last `, ` off of the end
|
||||
values: bansArray
|
||||
};
|
||||
log(LogLevel.DEBUG,"banQueryConfig object:")
|
||||
log(LogLevel.DEBUG,JSON.stringify(banQueryConfig,null,2))
|
||||
dbconn.query(banQueryConfig);
|
||||
dbconn.query("CALL update_scores()");
|
||||
await dbconn.query('COMMIT');
|
||||
} catch (e) {
|
||||
await dbconn.query('ROLLBACK');
|
||||
} finally {
|
||||
dbconn.release();
|
||||
}
|
||||
setTimeout(processBannedUsers,3600000+Math.floor(Math.random()*900000)) // Run every 1-1.25 hours to balance load
|
||||
}
|
||||
|
||||
setTimeout(processBannedUsers,600000+Math.floor(Math.random()*600000))
|
||||
|
||||
async function processEmptyMetadata() {
|
||||
log(LogLevel.INFO,"processEmptyMetadata run at " + new Date().toISOString());
|
||||
var result = await db.query(queries.getRequestsWithEmptyMetadata);
|
||||
for (var row of result.rows) {
|
||||
log(LogLevel.DEBUG,"Processing empty metadata for request: " + row['url']);
|
||||
requests.updateRequestMetadata(row['url']);
|
||||
}
|
||||
setTimeout(processEmptyMetadata,3600000+Math.floor(Math.random()*900000)) // Run every 1-1.25 hours to balance load
|
||||
}
|
||||
|
||||
processEmptyMetadata();
|
||||
app.get("/logout", async (request, response) =>
|
||||
request.session!.destroy(() => response.redirect(307, '/')));
|
||||
|
||||
// Check version then listen
|
||||
version.checkVersion().then(_ => app.listen(config.port, () => {
|
||||
cron.run();
|
||||
setInterval(cron.run,config.cronInterval);
|
||||
console.log(`Listening on port ${config.port}`);
|
||||
}));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue