aboutsummaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
authorAndrew Lee <andrew@alee14.me>2025-02-25 23:15:04 -0500
committerGitHub <noreply@github.com>2025-02-25 23:15:04 -0500
commit44f7f14736aaf77858ee71c80abeb3c13343d3c2 (patch)
tree47dc895e50fa95b52a894bf0806e1a6c1edc8818 /api
parent9519602e73a53931be10438dcd990becea7989d9 (diff)
parent5777f96394444dab18a81d6f085ac81df3e62008 (diff)
downloadAleeBot-44f7f14736aaf77858ee71c80abeb3c13343d3c2.tar.gz
AleeBot-44f7f14736aaf77858ee71c80abeb3c13343d3c2.tar.bz2
AleeBot-44f7f14736aaf77858ee71c80abeb3c13343d3c2.zip
Merge pull request #36 from Alee14/beta
2.13 Release
Diffstat (limited to 'api')
-rw-r--r--api/routes/quotes.js58
-rw-r--r--api/server.js73
2 files changed, 131 insertions, 0 deletions
diff --git a/api/routes/quotes.js b/api/routes/quotes.js
new file mode 100644
index 0000000..39aba7b
--- /dev/null
+++ b/api/routes/quotes.js
@@ -0,0 +1,58 @@
+const express = require('express');
+const quoteDB = require('../../models/quote.js');
+
+const router = express.Router();
+
+const pendingQuote = quoteDB.pendingQuote;
+const approvedQuote = quoteDB.quote;
+
+router.get('/pending-quotes', async (req, res) => {
+ try {
+ const quotes = await pendingQuote.findAll();
+ res.json(quotes);
+ } catch (error) {
+ console.error('Error fetching quotes:', error);
+ res.status(500).send('Internal Server Error');
+ }
+});
+
+router.post('/approve-quote', async (req, res) => {
+ const { id } = req.body;
+ try {
+ const quote = await pendingQuote.findByPk(id);
+ if (quote) {
+ await approvedQuote.create({
+ author: quote.author,
+ authorImage: quote.authorImage,
+ quote: quote.quote,
+ year: quote.year,
+ submitter: quote.submitterID
+ });
+ await pendingQuote.destroy({ where: { id } });
+ res.status(200).send('Quote approved');
+ } else {
+ res.status(404).send('Quote not found');
+ }
+ } catch (error) {
+ console.error('Error approving quote:', error);
+ res.status(500).send('Internal Server Error');
+ }
+});
+
+router.post('/reject-quote', async (req, res) => {
+ const { id } = req.body;
+ try {
+ const quote = await pendingQuote.findByPk(id);
+ if (quote) {
+ await pendingQuote.destroy({ where: { id } });
+ res.status(200).send('Quote rejected');
+ } else {
+ res.status(404).send('Quote not found');
+ }
+ } catch (error) {
+ console.error('Error rejecting quote:', error);
+ res.status(500).send('Internal Server Error');
+ }
+});
+
+module.exports = router;
diff --git a/api/server.js b/api/server.js
new file mode 100644
index 0000000..acfe528
--- /dev/null
+++ b/api/server.js
@@ -0,0 +1,73 @@
+const express = require('express');
+const cors = require('cors');
+const quotesRouter = require('./routes/quotes');
+require('dotenv').config()
+
+const app = express();
+
+const apiServer = (client) => {
+ app.use(cors()); // Allow cross-origin requests
+ app.use(express.json());
+
+ app.use('/api', quotesRouter);
+
+ app.get('/api/version', (req, res) => {
+ const { abVersion } = require('../storage/settings.json');
+ res.json(abVersion);
+
+ });
+
+ app.get('/api/uptime', (req, res) => {
+ res.json(client.uptime);
+ });
+
+ app.get('/api/servers', (req, res) => {
+ const guildsInfo = [];
+
+ if (client.guilds.cache.size === 0) {
+ res.json({
+ message: 'No servers found'
+ })
+ } else {
+ client.guilds.cache.forEach((guild) => {
+ const guildInfo = {
+ name: guild.name,
+ members: guild.memberCount,
+ id: guild.id
+ };
+ guildsInfo.push(guildInfo);
+ });
+ }
+
+ res.json(guildsInfo);
+
+ });
+
+ app.post('/api/leave', (req, res) => {
+ const { id } = req.body;
+ let guild = client.guilds.cache.get(id);
+
+ try {
+ guild.leave().then(guild => {
+ res.json({
+ guild: guild.name,
+ left: true
+ })
+ });
+
+ } catch (error) {
+ console.error('Error leaving server:', error);
+ res.status(500).res.json({
+ guild: guild.name,
+ left: false
+ })
+ }
+ });
+
+ // Start the server
+ app.listen(process.env.port, () => {
+ console.log(`Server is running on http://localhost:${process.env.port}`);
+ });
+};
+
+module.exports = apiServer;