blob: 40719853889e5337ae44a6380f2ef2c5ac914f49 (
plain)
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
28
29
30
31
32
33
34
35
36
37
|
/**
* Resource route: POST /api/scrape
* Triggers scraping for all venues (or a specific one via ?venue_id=xxx).
* Returns JSON results and redirects back if called from a form.
*/
import { redirect } from "react-router";
import type { Route } from "./+types/api.scrape";
import { runAllScrapers, runScraper } from "~/lib/scraper-runner.server";
export async function action({ request }: Route.ActionArgs) {
const formData = await request.formData();
const venueId = formData.get("venue_id");
const results = venueId
? [await runScraper(String(venueId))]
: await runAllScrapers();
// If called from a browser form, redirect back
const referer = request.headers.get("Referer");
if (referer) {
return redirect(referer);
}
return Response.json({ results });
}
// Allow GET for quick testing in the browser
export async function loader({ request }: Route.LoaderArgs) {
const url = new URL(request.url);
const venueId = url.searchParams.get("venue_id");
const results = venueId
? [await runScraper(venueId)]
: await runAllScrapers();
return Response.json({ results });
}
|