File size: 749 Bytes
c7a65c3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { env } from "$env/dynamic/private";
import type { WebSearchSource } from "$lib/types/WebSearch";

export default async function search(query: string): Promise<WebSearchSource[]> {
	const response = await fetch(
		`https://www.searchapi.io/api/v1/search?engine=google&hl=en&gl=us&q=${query}`,
		{
			method: "GET",
			headers: {
				Authorization: `Bearer ${env.SEARCHAPI_KEY}`,
				"Content-type": "application/json",
			},
		}
	);

	/* eslint-disable @typescript-eslint/no-explicit-any */
	const data = (await response.json()) as Record<string, any>;

	if (!response.ok) {
		throw new Error(
			data["message"] ?? `SearchApi returned error code ${response.status} - ${response.statusText}`
		);
	}

	return data["organic_results"] ?? [];
}