add: export in JSON
This commit is contained in:
+12
-4
@@ -1,5 +1,4 @@
|
|||||||
// TODO: unit tests for business logic
|
// TODO: unit tests for business logic
|
||||||
// TODO: export in JSON
|
|
||||||
|
|
||||||
const cheerio = require("cheerio");
|
const cheerio = require("cheerio");
|
||||||
|
|
||||||
@@ -35,7 +34,7 @@ async function handleSearch(req, res) {
|
|||||||
format: "json"
|
format: "json"
|
||||||
});
|
});
|
||||||
|
|
||||||
const response = await fetch(
|
const reposnse = await fetch(
|
||||||
`${searxngUrl}/search?${params}`,
|
`${searxngUrl}/search?${params}`,
|
||||||
{
|
{
|
||||||
headers: {
|
headers: {
|
||||||
@@ -43,9 +42,18 @@ async function handleSearch(req, res) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
const data = await reposnse.json();
|
||||||
|
|
||||||
const data = await response.json();
|
const filteredresults = filterJson(data.results || []);
|
||||||
res.json(filterJson(data.results || []));
|
|
||||||
|
// Send the result as a downloadable JSON file
|
||||||
|
res.setHeader("Content-Type", "application/json; charset=utf-8");
|
||||||
|
res.setHeader(
|
||||||
|
"Content-Disposition",
|
||||||
|
'attachment; filename="output.json"'
|
||||||
|
);
|
||||||
|
|
||||||
|
return res.send(JSON.stringify(filteredresults, null, 2));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("[SEARCH.JS] " + error);
|
console.error("[SEARCH.JS] " + error);
|
||||||
res.status(500).send("<p><b>Search failed!<br>See the console for the error.</b></p>");
|
res.status(500).send("<p><b>Search failed!<br>See the console for the error.</b></p>");
|
||||||
|
|||||||
Reference in New Issue
Block a user