mirror of
https://github.com/ajayyy/SponsorBlockServer.git
synced 2025-12-06 11:36:58 +03:00
118 lines
4.1 KiB
JavaScript
118 lines
4.1 KiB
JavaScript
var express = require('express');
|
|
// Create a service (the app object is just a callback).
|
|
var app = express();
|
|
var config = require('./config.js');
|
|
var redis = require('./utils/redis.js');
|
|
|
|
// Middleware
|
|
var corsMiddleware = require('./middleware/cors.js');
|
|
var loggerMiddleware = require('./middleware/logger.js');
|
|
const userCounter = require('./middleware/userCounter.js');
|
|
|
|
// Routes
|
|
var getSkipSegments = require('./routes/getSkipSegments.js').endpoint;
|
|
var postSkipSegments = require('./routes/postSkipSegments.js');
|
|
var getSkipSegmentsByHash = require('./routes/getSkipSegmentsByHash.js');
|
|
var voteOnSponsorTime = require('./routes/voteOnSponsorTime.js');
|
|
var viewedVideoSponsorTime = require('./routes/viewedVideoSponsorTime.js');
|
|
var setUsername = require('./routes/setUsername.js');
|
|
var getUsername = require('./routes/getUsername.js');
|
|
var shadowBanUser = require('./routes/shadowBanUser.js');
|
|
var addUserAsVIP = require('./routes/addUserAsVIP.js');
|
|
var getSavedTimeForUser = require('./routes/getSavedTimeForUser.js');
|
|
var getViewsForUser = require('./routes/getViewsForUser.js');
|
|
var getTopUsers = require('./routes/getTopUsers.js');
|
|
var getTotalStats = require('./routes/getTotalStats.js');
|
|
var getDaysSavedFormatted = require('./routes/getDaysSavedFormatted.js');
|
|
var postNoSegments = require('./routes/postNoSegments.js');
|
|
var getIsUserVIP = require('./routes/getIsUserVIP.js');
|
|
var postSegmentShift = require('./routes/postSegmentShift.js');
|
|
|
|
// Old Routes
|
|
var oldGetVideoSponsorTimes = require('./routes/oldGetVideoSponsorTimes.js');
|
|
var oldSubmitSponsorTimes = require('./routes/oldSubmitSponsorTimes.js');
|
|
|
|
//setup CORS correctly
|
|
app.use(corsMiddleware);
|
|
app.use(loggerMiddleware);
|
|
app.use(express.json())
|
|
|
|
if (config.userCounterURL) app.use(userCounter);
|
|
|
|
// Setup pretty JSON
|
|
if (config.mode === "development") app.set('json spaces', 2);
|
|
|
|
// Set production mode
|
|
app.set('env', config.mode || 'production');
|
|
|
|
//add the get function
|
|
app.get('/api/getVideoSponsorTimes', oldGetVideoSponsorTimes);
|
|
|
|
//add the oldpost function
|
|
app.get('/api/postVideoSponsorTimes', oldSubmitSponsorTimes);
|
|
app.post('/api/postVideoSponsorTimes', oldSubmitSponsorTimes);
|
|
|
|
//add the skip segments functions
|
|
app.get('/api/skipSegments', getSkipSegments);
|
|
app.post('/api/skipSegments', postSkipSegments);
|
|
|
|
// add the privacy protecting skip segments functions
|
|
app.get('/api/skipSegments/:prefix', getSkipSegmentsByHash);
|
|
|
|
//voting endpoint
|
|
app.get('/api/voteOnSponsorTime', voteOnSponsorTime.endpoint);
|
|
app.post('/api/voteOnSponsorTime', voteOnSponsorTime.endpoint);
|
|
|
|
//Endpoint when a sponsorTime is used up
|
|
app.get('/api/viewedVideoSponsorTime', viewedVideoSponsorTime);
|
|
app.post('/api/viewedVideoSponsorTime', viewedVideoSponsorTime);
|
|
|
|
//To set your username for the stats view
|
|
app.post('/api/setUsername', setUsername);
|
|
|
|
//get what username this user has
|
|
app.get('/api/getUsername', getUsername);
|
|
|
|
//Endpoint used to hide a certain user's data
|
|
app.post('/api/shadowBanUser', shadowBanUser);
|
|
|
|
//Endpoint used to make a user a VIP user with special privileges
|
|
app.post('/api/addUserAsVIP', addUserAsVIP);
|
|
|
|
//Gets all the views added up for one userID
|
|
//Useful to see how much one user has contributed
|
|
app.get('/api/getViewsForUser', getViewsForUser);
|
|
|
|
//Gets all the saved time added up (views * sponsor length) for one userID
|
|
//Useful to see how much one user has contributed
|
|
//In minutes
|
|
app.get('/api/getSavedTimeForUser', getSavedTimeForUser);
|
|
|
|
app.get('/api/getTopUsers', getTopUsers);
|
|
|
|
//send out totals
|
|
//send the total submissions, total views and total minutes saved
|
|
app.get('/api/getTotalStats', getTotalStats);
|
|
|
|
//send out a formatted time saved total
|
|
app.get('/api/getDaysSavedFormatted', getDaysSavedFormatted);
|
|
|
|
//submit video containing no segments
|
|
app.post('/api/noSegments', postNoSegments);
|
|
|
|
//get if user is a vip
|
|
app.get('/api/isUserVIP', getIsUserVIP);
|
|
|
|
//get if user is a vip
|
|
app.post('/api/segmentShift', postSegmentShift);
|
|
|
|
|
|
app.get('/database.db', function (req, res) {
|
|
res.sendFile("./databases/sponsorTimes.db", { root: "./" });
|
|
});
|
|
|
|
// Create an HTTP service.
|
|
module.exports = function createServer (callback) {
|
|
return app.listen(config.port, callback);
|
|
}
|