34 lines
		
	
	
		
			725 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			725 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { FreshContext, Handlers } from "$fresh/server.ts";
 | |
| import { searchMovie, searchTVShow } from "@lib/tmdb.ts";
 | |
| import { AccessDeniedError, BadRequestError } from "@lib/errors.ts";
 | |
| 
 | |
| const GET = async (
 | |
|   req: Request,
 | |
|   ctx: FreshContext,
 | |
| ) => {
 | |
|   const session = ctx.state.session;
 | |
|   if (!session) {
 | |
|     throw new AccessDeniedError();
 | |
|   }
 | |
| 
 | |
|   const u = new URL(req.url);
 | |
| 
 | |
|   const query = u.searchParams.get("q");
 | |
| 
 | |
|   if (!query) {
 | |
|     throw new BadRequestError();
 | |
|   }
 | |
| 
 | |
|   const type = u.searchParams.get("type") || "movie";
 | |
| 
 | |
|   const res = type === "movie"
 | |
|     ? await searchMovie(query)
 | |
|     : await searchTVShow(query);
 | |
| 
 | |
|   return new Response(JSON.stringify(res.results));
 | |
| };
 | |
| 
 | |
| export const handler: Handlers = {
 | |
|   GET,
 | |
| };
 |