diff --git a/services/request/src/services/WebServer/routes/api.ts b/services/request/src/services/WebServer/routes/api.ts index 9ac3693..5fc1e50 100644 --- a/services/request/src/services/WebServer/routes/api.ts +++ b/services/request/src/services/WebServer/routes/api.ts @@ -48,7 +48,7 @@ export default function register(factory: RouteRegisterFactory { + factory.get("/active", async (request, reply) => { let user = request.middlewareParams.auth.user; let tickets = await user.activeMovieTickets(); let movies = await convertTicketsToMovies(tickets); @@ -56,10 +56,38 @@ export default function register(factory: RouteRegisterFactory { + let id = parseInt((request.params)["id"]); + let ticket = await MovieTicket.findOne(id); + if (ticket === undefined) { + return respond(reply, Status.NotFound); + } + let movie = (await convertTicketsToMovies([ticket]))[0]; + respond(reply, Status.Ok, movie); + }); + + /** + * Cancel an active request + */ + factory.delete("/:id", async (request, reply) => { + let user = request.middlewareParams.auth.user; + let id = parseInt((request.params)["id"]); + let ticket = await MovieTicket.findOne(id, { where: { user: user.id } }); + if (ticket === undefined) { + return respond(reply, Status.NotFound); + } + ticket.isCanceled = true; + await ticket.save(); + respond(reply, Status.Ok); + }); + /** * Request a movie to download */ - factory.post("/create/tmdb/:tmdb_id", handleRequest([RequestTmdbMovieRequest], async (request, reply) => { + factory.post("/create/:tmdb_id", handleRequest([RequestTmdbMovieRequest], async (request, reply) => { // Verify that the ID has not yet been requested let tmdbId = (request.params)["tmdb_id"]; if (0 != await MovieTicket.count({ where: { tmdbId, isCanceled: false } })) {