Files
permit-api/src/mailProxy/mailProxy.route.ts

40 lines
1.0 KiB
TypeScript

import { FastifyInstance } from "fastify";
import { $mail, ProxyRequest } from "./mailProxy.schema";
import { getOutlookTokens } from "./mailProxy.service";
import axios from "axios";
export async function mailProxyRoutes(fastify: FastifyInstance) {
fastify.post(
"/",
{
schema: {
body: $mail("proxyRequest"),
},
config: { requiredClaims: ["mail:all"] },
preHandler: [fastify.authorize],
},
async (req, res) => {
const input = req.body as ProxyRequest;
try {
const tokens = await getOutlookTokens(input.email);
if (!tokens) return res.code(404).send({ error: "resource not found" });
const result = await axios({
url: input.url,
method: input.method,
headers: {
Authorization: "Bearer " + tokens.access_token,
},
data: input.body,
validateStatus: () => true,
});
return res.code(result.status).send(result.data);
} catch (err) {
return err;
}
}
);
}