diff --git a/services/request/src/services/WebServer/routes/api.ts b/services/request/src/services/WebServer/routes/api.ts index 78146eb..9ac3693 100644 --- a/services/request/src/services/WebServer/routes/api.ts +++ b/services/request/src/services/WebServer/routes/api.ts @@ -1,6 +1,6 @@ import { IpcClient as SeekerIpc } from "@autoplex-api/seeker"; import { MovieInfo, MovieTicket } from "@autoplex/database"; -import { handleRequest, RouteRegisterFactory, MiddlewareMethod } from "@autoplex/webserver"; +import { handleRequest, RouteRegisterFactory, MiddlewareMethod, Status, respond } from "@autoplex/webserver"; import Application from "../../../Application"; import MovieSearch from "../../MovieSearch"; import { auth } from "../middleware/auth"; @@ -27,7 +27,7 @@ export default function register(factory: RouteRegisterFactory(request.query)["query"]; let year = parseInt((request.query)["year"]) || undefined; let results = await app.service("Movie Search").search(query, year); - reply.send({ status: "Success", data: results }); + respond(reply, Status.Ok, results); }); /** @@ -36,12 +36,10 @@ export default function register(factory: RouteRegisterFactory { let id = parseInt((request.params)["id"]); if (id.toString() !== (request.params)["id"].trim()) { - reply.status(400); - reply.send({ "status": "Bad request" }); - return; + return respond(reply, Status.BadRequest); } let results = await app.service("Movie Search").details(id); - reply.send({ status: "Success", data: results}); + respond(reply, Status.Ok, results); }); // Movie Request --------------------------------------------------------------------------- @@ -54,7 +52,7 @@ export default function register(factory: RouteRegisterFactoryrequest.params)["tmdb_id"]; if (0 != await MovieTicket.count({ where: { tmdbId, isCanceled: false } })) { - reply.status(409); - reply.send({ status: "Conflict" }); - return; + return respond(reply, Status.Conflict); } - // Verify that the IMDb ID exists let movie = await app.service("Movie Search").details(tmdbId); - if (!movie) { // @TODO This isn't correct I don't think - reply.status(404); - reply.send({ satus: "Not found" }); - return; + if (!movie) { + return respond(reply, Status.NotFound); } // Create the movie request ticket let user = request.middlewareParams.auth.user; @@ -99,57 +92,8 @@ export default function register(factory: RouteRegisterFactory("Seeker").notifyMovieRequested(ticket.id); - return reply.send({ status: "Success", data: { ticket_id: ticket.id }}); + respond(reply, Status.Ok, { ticketId: ticket.id }); })); - - /** - * Request a movie to download - */ - // factory.get("/create/imdb/:imdb_id", handleRequest([RequestImdbMovieRequest], async (request, reply) => { - // // Verify that the ID has not yet been requested - // let imdbId = (request.params)["imdb_id"]; - // let title = (request.query)["title"] || null; - // // let year = // Scrape IMDb to find out... - // if (0 != await MovieTicket.count({imdbId})) { - // reply.status(409); - // reply.send({ status: "Conflict" }); - // return; - // } - // // Verify that the IMDb ID exists - // if (!await app.service("Movie Search").verifyImdbId(imdbId)) { - // reply.status(404); - // reply.send({ satus: "Not found" }); - // return; - // } - // // Create the movie request ticket - // let user = request.middlewareParams.auth.user; - // // let ticket = await MovieTicket.requestImdb(user, imdbId, title, year); - // return reply.send({ status: "Success", data: { ticket_id: ticket.id }}); - // })); - - /** - * Remove/cancel a request - */ - // factory.get("/cancel/:ticket_id", async (request, reply) => { - // // Verify that the ticket exists - // let ticketId = parseInt((request.params)["ticket_id"]); - // if (ticketId === NaN) { - // reply.status(400); - // reply.send({ status: "Bad request" }); - // return; - // } - // let user = request.middlewareParams.auth.user; - // let ticket = await MovieTicket.findOne({ id: ticketId, user}); - // if (ticket === ) { - // reply.status(404); - // reply.send({ status: "Not found" }); - // return; - // } - // // Create the movie request ticket - // let user = - // let ticket = await MovieTicket.requestTmdb(user, tmdbId, movieDetails); - // return reply.send({ status: "Success", data: { ticket_id: ticket.id }}); - // }); }); }); } diff --git a/services/request/src/services/WebServer/routes/auth.ts b/services/request/src/services/WebServer/routes/auth.ts index a5ba9fe..b711fd3 100644 --- a/services/request/src/services/WebServer/routes/auth.ts +++ b/services/request/src/services/WebServer/routes/auth.ts @@ -1,5 +1,5 @@ import { DiscordLinkRequest, RegisterToken, User } from "@autoplex/database"; -import { RouteRegisterFactory, handleRequest, MiddlewareMethod } from "@autoplex/webserver"; +import { RouteRegisterFactory, handleRequest, MiddlewareMethod, Status, respond } from "@autoplex/webserver"; import jwt from "jsonwebtoken" import Application from "../../../Application"; import { LoginRequest, ILoginFormBody } from "../requests"; @@ -23,9 +23,7 @@ export default function register(factory: RouteRegisterFactoryrequest.body; let user = await User.authenticate(form.email, form.password); if (user === null) { - reply.status(401); - reply.send({ "status": "Unauthorized" }); - return + return respond(reply, Status.Unauthorized); } let body = { id: user.id, name: user.name, isAdmin: user.isAdmin }; let token = jwt.sign(body, app.APP_KEY, { expiresIn: 60*60*24 }); @@ -41,7 +39,7 @@ export default function register(factory: RouteRegisterFactory { let token: string = (request.params)["token"]; if (!(await RegisterToken.isValid(token))) { - reply.status(422); - reply.send({ "status": "unprocessable entity" }); - return; + return respond(reply, Status.UnprocessableEntity); } - reply.send({ status: "Success" }); + respond(reply, Status.Ok); }); /** @@ -79,11 +75,9 @@ export default function register(factory: RouteRegisterFactory { let email: string = (request.params)["email"].trim(); if (!Boolean(email) || await User.count({email}) != 0) { - reply.status(422); - reply.send({ "status": "unprocessable entity" }); - return; + return respond(reply, Status.UnprocessableEntity); } - reply.send({ status: "Success" }); + respond(reply, Status.Ok); }); // Account Linking ----------------------------------------------------------------------------- @@ -91,11 +85,9 @@ export default function register(factory: RouteRegisterFactory { let token = (request.params)["token"]; if (await DiscordLinkRequest.count({ where: { token } }) == 0) { - reply.status(404); - reply.send({ status: "Not found" }); - return; + return respond(reply, Status.NotFound); } - reply.send({ status: "Success" }); + return respond(reply, Status.Ok); }); /** @@ -106,20 +98,16 @@ export default function register(factory: RouteRegisterFactory(request.params)["token"]; let linkRequest = await DiscordLinkRequest.findOne({ where: { token } }); if (linkRequest === undefined) { - reply.status(404); - reply.send({ status: "Not found" }); - return; + return respond(reply, Status.NotFound); } // // Validate the credentials let form = request.body; let user = await User.authenticate(form.email, form.password); if (user === null) { - reply.status(401); - reply.send({ "status": "Unauthorized" }); - return + return respond(reply, Status.Unauthorized); } // Link the accounts await linkRequest.linkUser(user); - reply.send({ "status": "Success" }); + return respond(reply, Status.Ok); })); }