Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
43fd1f5
Quick fix
a3ryk Feb 23, 2025
b0923eb
Removed the last push
a3ryk Feb 23, 2025
ee9815c
added notification modals, routes and middlewares
a3ryk Feb 26, 2025
faae097
added page routes, middlewares, modals and bumped version
a3ryk Feb 26, 2025
a0828d8
Ignored package-lock.json
a3ryk Feb 26, 2025
0f29048
Added content to the schema
a3ryk Mar 1, 2025
1894585
Updated stats schema to support new style
a3ryk Mar 24, 2025
aee3086
Updated logger to support new style
a3ryk Mar 24, 2025
e4c7021
Added username for user storing
a3ryk Mar 24, 2025
4211dd1
Added new routes for stats
a3ryk Mar 24, 2025
d9c32ae
Added logger
a3ryk Mar 24, 2025
6b4ba1c
Added a fix to identify url
a3ryk Mar 24, 2025
d229b97
Updated _id from systemstats to system
a3ryk Mar 24, 2025
2e3c753
Removed all logging from endpoints
a3ryk Mar 24, 2025
a12fedf
Fixed the endpoint
a3ryk Mar 24, 2025
b2faffb
Removed unnessary logging
a3ryk Mar 24, 2025
281f45b
Added failed logger
a3ryk Mar 24, 2025
353d08c
Added auth
a3ryk Mar 24, 2025
eac06bd
Added 401
a3ryk Mar 24, 2025
55bddaa
added some improments
a3ryk Mar 25, 2025
7204a18
Added key
a3ryk Mar 29, 2025
8fc73af
A quick fix
a3ryk Apr 7, 2025
e614634
Added message to services
a3ryk Apr 8, 2025
32e153d
Logger to store token reset history [subject to change]
a3ryk May 19, 2025
fd7db66
Bug: Database query built from user-controlled sources
a3ryk May 22, 2025
7808969
feat(api): added greeting notification on account creation
a3ryk May 23, 2025
4784d8a
feat(api): added rewards route to get and post rewards
a3ryk May 23, 2025
dea2bf7
feat(api): added schema for rewards
a3ryk May 23, 2025
d6592a4
feat(api): added a enedpoint to redeem rewards
a3ryk May 23, 2025
e3807c9
refractor(api): fixed some bugs including uncommeting auth key check …
a3ryk May 24, 2025
8665ac7
Updated sudo to system
a3ryk May 24, 2025
c8b9285
QUICK fix
a3ryk May 24, 2025
e88bbcf
Bumped the version to v4.10.0
a3ryk May 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,7 @@
/logs

# Ignore data files
/data
/data

# Ignore package-lock.json
package-lock.json
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "waifu.it",
"version": "4.9.1",
"version": "4.10.0",
"description": "Random API Serving Anime stuff",
"author": "Aeryk",
"private": true,
Expand Down
8 changes: 5 additions & 3 deletions src/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@
import express from 'express';
import bodyParser from 'body-parser';
import cors from 'cors';
import pkg from '../package.json' assert { type: 'json' };
import { createRequire } from 'module';
const require = createRequire(import.meta.url);
const pkg = require('../package.json');
/*** Importing custom error handlers and logger middleware ***/
import {
handle404 /*** @params: req, res, next ***/,
logErrors /*** @params: err, req, res, next ***/,
errorHandler /*** @params: err, req, res, next ***/,
} from './middlewares/errors.js';
import { logIP } from './middlewares/logger.js';
import { requestLogger } from './middlewares/logger.js';
import routesV3 from './routes/v3/index.js';
import routesV4 from './routes/v4/index.js';

Expand Down Expand Up @@ -38,7 +40,7 @@ app.use(express.urlencoded({ extended: true }));
* @param {Function} next - Express next middleware function.
*/
if (process.env.LOGGER === 'true') {
app.use(logIP);
app.use(requestLogger);
}

/*** Middleware to parse the request body ***/
Expand Down
13 changes: 2 additions & 11 deletions src/controllers/v3/facts/randomFacts.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import createError from 'http-errors';
import Facts from '../../../models/schemas/Fact.js';
import tagsFilter from '../../../modules/tagsFilter.js';
import lengthFilter from '../../../modules/lengthFilter.js';
import Stats from '../../../models/schemas/Stat.js';

/**
* Gets a random anime fact with optional length and tags filters and updates system statistics.
Expand Down Expand Up @@ -41,18 +40,10 @@ const getRandomFact = async (req, res, next) => {
}

// Respond with the random fact
res.status(200).json(result);

// Update system statistics for facts
await Stats.findOneAndUpdate({ _id: 'systemstats' }, { $inc: { facts: 1 } });
return res.status(200).json(result);
} catch (error) {
// Update system statistics for failed requests
await Stats.findOneAndUpdate(
{ _id: 'systemstats' },
{ $inc: { failed_requests: 1 } }
);
return next(error);
}
};

export default getRandomFact;
export default getRandomFact;
10 changes: 1 addition & 9 deletions src/controllers/v3/gifs/randomAngry.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@

import createError from 'http-errors';
import Angry from '../../../models/schemas/Angry.js';
import Stats from '../../../models/schemas/Stat.js';

// Get random Anime Angry
const getRandomAngry = async (req, res, next) => {
Expand All @@ -16,14 +14,8 @@ const getRandomAngry = async (req, res, next) => {
return next(createError(404, 'Could not find any Angry Gif'));
}

res.status(200).json(result);

await Stats.findOneAndUpdate({ _id: 'systemstats' }, { $inc: { angry: 1 } });
return res.status(200).json(result);
} catch (error) {
await Stats.findOneAndUpdate(
{ _id: 'systemstats' },
{ $inc: { failed_requests: 1 } }
);
return next(error);
}
};
Expand Down
10 changes: 1 addition & 9 deletions src/controllers/v3/gifs/randomBaka.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@

import createError from 'http-errors';
import Baka from '../../../models/schemas/Baka.js';
import Stats from '../../../models/schemas/Stat.js';

// Get random Anime Baka
const getRandomBaka = async (req, res, next) => {
Expand All @@ -16,14 +14,8 @@ const getRandomBaka = async (req, res, next) => {
return next(createError(404, 'Could not find any Baka Gif'));
}

res.status(200).json(result);

await Stats.findOneAndUpdate({ _id: 'systemstats' }, { $inc: { baka: 1 } });
return res.status(200).json(result);
} catch (error) {
await Stats.findOneAndUpdate(
{ _id: 'systemstats' },
{ $inc: { failed_requests: 1 } }
);
return next(error);
}
};
Expand Down
10 changes: 1 addition & 9 deletions src/controllers/v3/gifs/randomBite.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@

import createError from 'http-errors';
import Bite from '../../../models/schemas/Bite.js';
import Stats from '../../../models/schemas/Stat.js';

// Get random Anime Bite
const getRandomBite = async (req, res, next) => {
Expand All @@ -16,14 +14,8 @@ const getRandomBite = async (req, res, next) => {
return next(createError(404, 'Could not find any Bite Gif'));
}

res.status(200).json(result);

await Stats.findOneAndUpdate({ _id: 'systemstats' }, { $inc: { bite: 1 } });
return res.status(200).json(result);
} catch (error) {
await Stats.findOneAndUpdate(
{ _id: 'systemstats' },
{ $inc: { failed_requests: 1 } }
);
return next(error);
}
};
Expand Down
9 changes: 1 addition & 8 deletions src/controllers/v3/gifs/randomBlush.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

import createError from 'http-errors';
import Blush from '../../../models/schemas/Blush.js';
import Stats from '../../../models/schemas/Stat.js';
Expand All @@ -16,14 +15,8 @@ const getRandomBlush = async (req, res, next) => {
return next(createError(404, 'Could not find any Blush Gif'));
}

res.status(200).json(result);

await Stats.findOneAndUpdate({ _id: 'systemstats' }, { $inc: { blush: 1 } });
return res.status(200).json(result);
} catch (error) {
await Stats.findOneAndUpdate(
{ _id: 'systemstats' },
{ $inc: { failed_requests: 1 } }
);
return next(error);
}
};
Expand Down
9 changes: 1 addition & 8 deletions src/controllers/v3/gifs/randomBonk.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

import createError from 'http-errors';
import Bonk from '../../../models/schemas/Bonk.js';
import Stats from '../../../models/schemas/Stat.js';
Expand All @@ -16,14 +15,8 @@ const getRandomBonk = async (req, res, next) => {
return next(createError(404, 'Could not find any Bonk Gif'));
}

res.status(200).json(result);

await Stats.findOneAndUpdate({ _id: 'systemstats' }, { $inc: { bonk: 1 } });
return res.status(200).json(result);
} catch (error) {
await Stats.findOneAndUpdate(
{ _id: 'systemstats' },
{ $inc: { failed_requests: 1 } }
);
return next(error);
}
};
Expand Down
9 changes: 1 addition & 8 deletions src/controllers/v3/gifs/randomBored.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

import createError from 'http-errors';
import Bored from '../../../models/schemas/Bored.js';
import Stats from '../../../models/schemas/Stat.js';
Expand All @@ -16,14 +15,8 @@ const getRandomBored = async (req, res, next) => {
return next(createError(404, 'Could not find any Bored Gif'));
}

res.status(200).json(result);

await Stats.findOneAndUpdate({ _id: 'systemstats' }, { $inc: { bored: 1 } });
return res.status(200).json(result);
} catch (error) {
await Stats.findOneAndUpdate(
{ _id: 'systemstats' },
{ $inc: { failed_requests: 1 } }
);
return next(error);
}
};
Expand Down
9 changes: 1 addition & 8 deletions src/controllers/v3/gifs/randomBully.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

import createError from 'http-errors';
import Bully from '../../../models/schemas/Bully.js';
import Stats from '../../../models/schemas/Stat.js';
Expand All @@ -16,14 +15,8 @@ const getRandomBully = async (req, res, next) => {
return next(createError(404, 'Could not find any Bully Gif'));
}

res.status(200).json(result);

await Stats.findOneAndUpdate({ _id: 'systemstats' }, { $inc: { bully: 1 } });
return res.status(200).json(result);
} catch (error) {
await Stats.findOneAndUpdate(
{ _id: 'systemstats' },
{ $inc: { failed_requests: 1 } }
);
return next(error);
}
};
Expand Down
9 changes: 1 addition & 8 deletions src/controllers/v3/gifs/randomBye.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

import createError from 'http-errors';
import Bye from '../../../models/schemas/Bye.js';
import Stats from '../../../models/schemas/Stat.js';
Expand All @@ -16,14 +15,8 @@ const getRandomBye = async (req, res, next) => {
return next(createError(404, 'Could not find any Bye Gif'));
}

res.status(200).json(result);

await Stats.findOneAndUpdate({ _id: 'systemstats' }, { $inc: { bye: 1 } });
return res.status(200).json(result);
} catch (error) {
await Stats.findOneAndUpdate(
{ _id: 'systemstats' },
{ $inc: { failed_requests: 1 } }
);
return next(error);
}
};
Expand Down
9 changes: 1 addition & 8 deletions src/controllers/v3/gifs/randomChase.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

import createError from 'http-errors';
import Chase from '../../../models/schemas/Chase.js';
import Stats from '../../../models/schemas/Stat.js';
Expand All @@ -16,14 +15,8 @@ const getRandomChase = async (req, res, next) => {
return next(createError(404, 'Could not find any Chase Gif'));
}

res.status(200).json(result);

await Stats.findOneAndUpdate({ _id: 'systemstats' }, { $inc: { chase: 1 } });
return res.status(200).json(result);
} catch (error) {
await Stats.findOneAndUpdate(
{ _id: 'systemstats' },
{ $inc: { failed_requests: 1 } }
);
return next(error);
}
};
Expand Down
9 changes: 1 addition & 8 deletions src/controllers/v3/gifs/randomCheer.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

import createError from 'http-errors';
import Cheer from '../../../models/schemas/Cheer.js';
import Stats from '../../../models/schemas/Stat.js';
Expand All @@ -16,14 +15,8 @@ const getRandomCheer = async (req, res, next) => {
return next(createError(404, 'Could not find any Cheer Gif'));
}

res.status(200).json(result);

await Stats.findOneAndUpdate({ _id: 'systemstats' }, { $inc: { cheer: 1 } });
return res.status(200).json(result);
} catch (error) {
await Stats.findOneAndUpdate(
{ _id: 'systemstats' },
{ $inc: { failed_requests: 1 } }
);
return next(error);
}
};
Expand Down
9 changes: 1 addition & 8 deletions src/controllers/v3/gifs/randomCringe.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

import createError from 'http-errors';
import Cringe from '../../../models/schemas/Cringe.js';
import Stats from '../../../models/schemas/Stat.js';
Expand All @@ -16,14 +15,8 @@ const getRandomCringe = async (req, res, next) => {
return next(createError(404, 'Could not find any Cringe Gif'));
}

res.status(200).json(result);

await Stats.findOneAndUpdate({ _id: 'systemstats' }, { $inc: { cringe: 1 } });
return res.status(200).json(result);
} catch (error) {
await Stats.findOneAndUpdate(
{ _id: 'systemstats' },
{ $inc: { failed_requests: 1 } }
);
return next(error);
}
};
Expand Down
9 changes: 1 addition & 8 deletions src/controllers/v3/gifs/randomCry.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

import createError from 'http-errors';
import Cry from '../../../models/schemas/Cry.js';
import Stats from '../../../models/schemas/Stat.js';
Expand All @@ -16,14 +15,8 @@ const getRandomCry = async (req, res, next) => {
return next(createError(404, 'Could not find any Cry Gif'));
}

res.status(200).json(result);

await Stats.findOneAndUpdate({ _id: 'systemstats' }, { $inc: { cry: 1 } });
return res.status(200).json(result);
} catch (error) {
await Stats.findOneAndUpdate(
{ _id: 'systemstats' },
{ $inc: { failed_requests: 1 } }
);
return next(error);
}
};
Expand Down
9 changes: 1 addition & 8 deletions src/controllers/v3/gifs/randomCuddle.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

import createError from 'http-errors';
import Cuddle from '../../../models/schemas/Cuddle.js';
import Stats from '../../../models/schemas/Stat.js';
Expand All @@ -16,14 +15,8 @@ const getRandomCuddle = async (req, res, next) => {
return next(createError(404, 'Could not find any Cuddle Gif'));
}

res.status(200).json(result);

await Stats.findOneAndUpdate({ _id: 'systemstats' }, { $inc: { cuddle: 1 } });
return res.status(200).json(result);
} catch (error) {
await Stats.findOneAndUpdate(
{ _id: 'systemstats' },
{ $inc: { failed_requests: 1 } }
);
return next(error);
}
};
Expand Down
9 changes: 1 addition & 8 deletions src/controllers/v3/gifs/randomDab.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

import createError from 'http-errors';
import Dab from '../../../models/schemas/Dab.js';
import Stats from '../../../models/schemas/Stat.js';
Expand All @@ -16,14 +15,8 @@ const getRandomDab = async (req, res, next) => {
return next(createError(404, 'Could not find any Dab Gif'));
}

res.status(200).json(result);

await Stats.findOneAndUpdate({ _id: 'systemstats' }, { $inc: { dab: 1 } });
return res.status(200).json(result);
} catch (error) {
await Stats.findOneAndUpdate(
{ _id: 'systemstats' },
{ $inc: { failed_requests: 1 } }
);
return next(error);
}
};
Expand Down
Loading
Loading