| 10-osint-code-hosting |
09 |
recon |
| register |
| integration |
| cmd |
| viper |
| httptest |
|
| phase |
provides |
| 10-osint-code-hosting |
Ten code-hosting ReconSource implementations (Plans 10-01..10-08) |
|
|
| sources.RegisterAll wires all ten Phase 10 sources onto a recon.Engine |
| cmd/recon.go constructs real SourcesConfig from env + viper and invokes RegisterAll |
| End-to-end SweepAll integration test exercising every source against one multiplexed httptest server |
|
| 11-osint-pastebins |
| 12-osint-search-engines |
| cli-recon |
|
| added |
patterns |
|
|
| Env-var → viper fallback (firstNonEmpty) for recon credential lookup |
| Unconditional source registration: credless sources register but Enabled()==false, uniform CLI surface |
| Single httptest.ServeMux routing per-path fixtures for multi-source integration tests |
|
|
| created |
modified |
| pkg/recon/sources/register_test.go |
| pkg/recon/sources/integration_test.go |
| .planning/phases/10-osint-code-hosting/deferred-items.md |
|
| pkg/recon/sources/register.go |
| cmd/recon.go |
|
|
| Register all ten sources unconditionally so `keyhunter recon list` shows the full catalog regardless of configured credentials; missing creds just flip Enabled()==false |
| Integration test constructs sources directly with BaseURL overrides (not via RegisterAll) because RegisterAll wires production URLs |
| Credential precedence: env var → viper config key → empty (source disabled) |
| Single multiplexed httptest server used instead of ten separate servers — simpler and matches how recon.Engine fans out in parallel |
| firstNonEmpty helper kept local to cmd/recon.go rather than pkg-level to avoid exporting a trivial utility |
|
| sources.RegisterAll(engine, cfg) is the single call cmd-layer code must make to wire Phase 10 |
| Integration tests that need to drive many sources from one server encode the sub-source into the URL path (/search/code, /api/v4/search, etc.) |
| Struct literals for sources that lazy-init `client` in Sweep; NewXxxSource constructor for sources that don't (GitHubSource, KaggleSource, HuggingFaceSource) |
|
|
12min |
2026-04-05 |