Compare commits

..

No commits in common. "8f980748b57c97fdb8c344cdc8eb5bcda50fae7a" and "12e508c7cb524275823886e2820d29f36c13798c" have entirely different histories.

8 changed files with 81 additions and 96 deletions

View File

@ -1,7 +1,6 @@
import { Response } from "express"; import { Response } from "express";
import { getAccounts, getRooms, registerAccount } from "../db/api-db"; import { getAccounts, registerAccount } from "../db/api-db";
import { getAddressId } from "../db/utils/mail"; import { getAddressId } from "../db/utils/mail";
import logger from "../system/Logger";
import statusCodes from "../utils/statusCodes"; import statusCodes from "../utils/statusCodes";
export default class Account { export default class Account {
@ -24,16 +23,4 @@ export default class Account {
}); });
// todo change mailbox to account // todo change mailbox to account
} }
static async getRooms(body, res: Response) {
const { mailboxId, offset, limit } = body;
getRooms(mailboxId)
.then((rooms) => {
res.status(statusCodes.OK).json(rooms);
})
.catch((err) => {
logger.err(err);
res.status(statusCodes.INTERNAL_SERVER_ERROR);
});
}
} }

View File

@ -61,6 +61,18 @@ export default class Room {
} }
} }
static async getAll(body, res: Response) {
const { mailboxId, offset, limit } = body;
getRooms(mailboxId)
.then((rooms) => {
res.status(statusCode.OK).json(rooms);
})
.catch((err) => {
logger.err(err);
res.status(statusCode.INTERNAL_SERVER_ERROR);
});
}
static async getMessages(body, res: Response) { static async getMessages(body, res: Response) {
const { roomId } = body; const { roomId } = body;
getMessages(roomId) getMessages(roomId)

View File

@ -1,28 +0,0 @@
import express from "express";
import Account from "../abl/Account-abl";
import validator from "../validator/validator";
const router = express.Router();
/**
* Return all mailboxes and folders for an user
*/
router.get("/getAll", async (req, res) => {
await validator.validate("getAccounts", req.params, res, Account.getAll);
});
/**
* Register a new mailbox inside the app
*/
router.post("/register", async (req, res) => {
await validator.validate("createAccount", req.body, res, Account.register);
});
/**
* Return all rooms from a mailbox
*/
router.get("/:mailboxId/rooms", async (req, res) => {
// todo offet limit
await validator.validate("getRooms", req.params, res, Account.getRooms);
});
export default router;

57
back/routes/mail.ts Normal file
View File

@ -0,0 +1,57 @@
import express from "express";
const router = express.Router();
import Message from "../abl/Message-abl";
import Account from "../abl/Account-abl";
import validator from "../validator/validator";
import Room from "../abl/Room-abl";
/**
* Return all mailboxes and folders for an user
*/
router.get("/accounts", async (req, res) => {
await validator.validate("getAccounts", req.params, res, Account.getAll);
});
/**
* Return all rooms from a mailbox
*/
router.get("/:mailboxId/rooms", async (req, res) => {
// todo offet limit
await validator.validate("getRooms", req.params, res, Room.getAll);
});
/**
* Return all messages from a room
*/
router.get("/:roomId/messages", async (req, res) => {
await validator.validate("getMessages", req.params, res, Room.getMessages);
});
/**
* Return all members from a room
*/
router.get("/:roomId/members", async (req, res) => {
await validator.validate("getMembers", req.params, res, Room.getMembers);
});
/**
* Register a new mailbox inside the app
*/
router.post("/account", async (req, res) => {
await validator.validate("createAccount", req.body, res, Account.register);
});
router.post("/addFlag", async (req, res) => {
await validator.validate("addFlag", req.body, res, Message.addFlag);
});
router.post("/removeFlag", async (req, res) => {
await validator.validate("removeFlag", req.body, res, Message.removeFlag);
});
router.post("/response", async (req, res) => {
await validator.validate("response", req.body, res, Room.response);
});
export default router;

View File

@ -1,15 +0,0 @@
import express from "express";
import Message from "../abl/Message-abl";
import validator from "../validator/validator";
const router = express.Router();
router.post("/addFlag", async (req, res) => {
await validator.validate("addFlag", req.body, res, Message.addFlag);
});
router.post("/removeFlag", async (req, res) => {
await validator.validate("removeFlag", req.body, res, Message.removeFlag);
});
export default router;

View File

@ -1,24 +0,0 @@
import express from "express";
import Room from "../abl/Room-abl";
import validator from "../validator/validator";
const router = express.Router();
/**
* Return all messages from a room
*/
router.get("/:roomId/messages", async (req, res) => {
await validator.validate("getMessages", req.params, res, Room.getMessages);
});
/**
* Return all members from a room
*/
router.get("/:roomId/members", async (req, res) => {
await validator.validate("getMembers", req.params, res, Room.getMembers);
});
router.post("/response", async (req, res) => {
await validator.validate("response", req.body, res, Room.response);
});
export default router;

View File

@ -2,10 +2,8 @@ import express from "express";
import cors from "cors"; import cors from "cors";
const app = express(); const app = express();
import { execQueryAsync, execQuery } from "./db/db"; import { execQueryAsync, execQuery } from "./db/db";
import mailRouter from "./routes/mail";
import emailManager from "./mails/EmailManager"; import emailManager from "./mails/EmailManager";
import accountRouter from "./routes/account";
import roomRouter from "./routes/room";
import messageRouter from "./routes/message";
app.use(express.json()); app.use(express.json());
app.use( app.use(
@ -16,11 +14,8 @@ app.use(
app.use(cors()); app.use(cors());
app.listen(process.env.PORT || 5500); app.listen(process.env.PORT || 5500);
app.use("/api/account", accountRouter); app.use("/api/mail", mailRouter);
app.use("/api/room", roomRouter);
app.use("/api/message", messageRouter);
// create imap and smtp instances for each account
emailManager.init(); emailManager.init();
// debug reset all tables // debug reset all tables

View File

@ -2,27 +2,28 @@ import API from "./API";
export default { export default {
registerAccount(data: object) { registerAccount(data: object) {
return API().post("/account/register", data); return API().post("/mail/account", data);
}, },
getAccounts() { getAccounts() {
return API().get("/account/getAll"); return API().get("/mail/accounts");
}, },
getRooms(mailboxId: number) { getRooms(mailboxId: number) {
return API().get(`/account/${mailboxId}/rooms`); return API().get(`/mail/${mailboxId}/rooms`);
}, },
getMessages(roomId: number) { getMessages(roomId: number) {
return API().get(`/room/${roomId}/messages`); return API().get(`/mail/${roomId}/messages`);
}, },
getMembers(roomId: number) { getMembers(roomId: number) {
return API().get(`/room/${roomId}/members`); return API().get(`/mail/${roomId}/members`);
}, },
addFlag(data: { mailboxId: number; messageId: number; flag: string }) { addFlag(data: { mailboxId: number; messageId: number; flag: string }) {
return API().post(`/message/addFlag`, data); return API().post(`/mail/addFlag`, data);
}, },
removeFlag(data: { mailboxId: number; messageId: number; flag: string }) { removeFlag(data: { mailboxId: number; messageId: number; flag: string }) {
return API().post(`/message/removeFlag`, data); return API().post(`/mail/removeFlag`, data);
}, },
reponseEmail(data: { user: string; roomId: number; text: string; html: string }) { reponseEmail(data: { user: string; roomId: number; text: string; html: string }) {
return API().post(`/room/response`, data); console.log(data);
return API().post(`/mail/response`, data);
}, },
}; };