35 lines
879 B
JavaScript
35 lines
879 B
JavaScript
import { normalizeResults } from "./index.js";
|
|
import { env } from "../envs.js";
|
|
|
|
// type subSearch under index.d.ts
|
|
// TODO: support language, time_range, pageno
|
|
async function searchGoogle({ query, language, time_range, pageno, signal }) {
|
|
const searchUrl = `https://www.googleapis.com/customsearch/v1?key=${env.GOOGLE_API_KEY}&cx=${env.GOOGLE_CX}&q=${encodeURIComponent(
|
|
query
|
|
)}`;
|
|
|
|
const response = await fetch(searchUrl, { signal });
|
|
|
|
if (!response.ok) {
|
|
console.error(await response.text());
|
|
return [];
|
|
}
|
|
|
|
const data = await response.json();
|
|
const results = [];
|
|
|
|
if (data.items && Array.isArray(data.items)) {
|
|
for (const item of data.items) {
|
|
results.push({
|
|
title: item.title,
|
|
url: item.link,
|
|
content: item.snippet || "",
|
|
});
|
|
}
|
|
}
|
|
|
|
return normalizeResults(results);
|
|
}
|
|
|
|
export default searchGoogle;
|