Add OpenCorporates collector for org targets, gated on an API token
Closes the last coverage gap for org (person remains intentionally unaddressed — no good free/non-scraping option exists). Unlike the other 8 sources, OpenCorporates now requires an API token even on its free tier (confirmed: keyless request gets 401). RunnerRegistry::has() checks services.opencorporates.token is configured before exposing the source as runnable, so it degrades to "not yet integrated" in the UI rather than a broken Run button, until OPENCORPORATES_API_TOKEN is set. Also fixes a real bug hit while building this: a RunnerRegistry::REQUIRES class constant mapping source key to a closure crashed on file load (PHP class constants can't hold closures) — inlined the one check instead of building an abstraction for a single case. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
86f73c46b2
commit
dc4388eabf
@@ -32,5 +32,10 @@ class AppServiceProvider extends ServiceProvider
|
||||
RateLimiter::for('osint-runner:holehe', fn () => Limit::perMinute(15));
|
||||
RateLimiter::for('osint-runner:gravatar', fn () => Limit::perMinute(45));
|
||||
RateLimiter::for('osint-runner:dns', fn () => Limit::perMinute(60));
|
||||
|
||||
// OpenCorporates' free tier is 50 requests/day, 200/month — this
|
||||
// matches their real quota (not a courtesy limit) to protect the
|
||||
// configured token from getting exhausted or suspended.
|
||||
RateLimiter::for('osint-runner:opencorporates', fn () => Limit::perDay(50));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user