Namespace Kuestenlogik.Bowire.Interceptor
Classes
- BowireInterceptRailContribution
Intercept rail contribution (v2.2 rail-IA refactor). Replaces the previous Mocks + Traffic rails (plus the already-hidden Intercepted + Proxy descriptors) with a single rail whose four sub-tabs cover the whole "what do I do with live traffic" surface.
- BowireInterceptorApplicationBuilderExtensions
IApplicationBuilder extensions that wire the in-process HTTP interceptor (#153) into an ASP.NET host's pipeline. Pair with AddBowire(IServiceCollection) and MapBowire(IEndpointRouteBuilder, string, Action<BowireOptions>?): register Bowire's services, mount the workbench, then call
app.UseBowireInterceptor()as early in the pipeline as you want the interceptor to see the request (typically betweenUseRouting()andUseEndpoints()).
- BowireInterceptorEndpointContribution
#325 (v2.1) — discoverable endpoint-mount entry point for the Interceptor package. Picked up by Core's BowireApiEndpoints scan via the IBowireEndpointContribution seam — splices the /api/intercepted/* (+ /api/traffic/* alias) and /api/tools/reverse- proxy/* endpoints into the auth-gated bowireGroup without Core referencing the endpoint types directly.
- BowireInterceptorEndpoints
Workbench-facing endpoints for the in-process interceptor (#153). Pair with
app.UseBowireInterceptor(): the middleware captures flows into the singleton InterceptedFlowStore, and these endpoints expose them to the workbench's "Intercepted" rail — listing, live SSE stream, detail fetch, send-to-recording.
- BowireInterceptorOptions
Per-host configuration for Kuestenlogik.Bowire.Interceptor.BowireInterceptorMiddleware. The host hands an instance to
UseBowireInterceptor(); the middleware honours it for every request that passes through.
- BowireInterceptorServiceContribution
#325 (v2.1) — discoverable service-registration entry point for the Interceptor package. Picked up by Core's
BowireServiceCollectionExtensions.AddBowireassembly scan via the IBowireServiceContribution seam, so embedded hosts that referenceKuestenlogik.Bowire.Interceptorget the flow store + mock store + reverse-proxy registry registered automatically — without Core taking a compile-time reference on the moved types.
- BowireReverseProxyHost
Boots a standalone reverse-proxy host that fronts an upstream service (#307 — Phase C of the #153 interceptor track; YARP migration in #323). Two Kestrel hosts come up side-by-side:
- the edge listener clients point at — every request forwarded upstream by Kuestenlogik.Bowire.Interceptor.BowireReverseProxyMiddleware using YARP's Yarp.ReverseProxy.Forwarder.IHttpForwarder.SendAsync(HttpContext, string, HttpMessageInvoker, ForwarderRequestConfig, HttpTransformer), captured into InterceptedFlowStore;
- the sidecar API the workbench's "Intercepted" rail
reads (
/api/intercepted/flows//stream), backed by the same store singleton.
- BowireReverseProxyHostOptions
Construction-time configuration for BowireReverseProxyHost.
- BowireToolsEndpoints
Workbench Tools surface — endpoints that drive the UI affordances under the topbar's "Tools" menu and Settings → Tools list. Currently the only entry is the reverse-proxy launcher (#153 UI phase), which lets an operator spin up an in-process BowireReverseProxyHost from the workbench without dropping to the standalone
bowire proxyCLI.
- InterceptedFlow
One request/response pair observed by Kuestenlogik.Bowire.Interceptor.BowireInterceptorMiddleware as it sat between the host's routing and endpoint stages. Shape mirrors CapturedFlow on purpose — the workbench "Intercepted" rail reuses the same detail-pane renderer as the standalone proxy's "Proxy" rail. Only the trigger differs: this surface is filled by every request the host receives, not by a CONNECT-tunnelled MITM session.
- InterceptedFlowStore
In-memory ring buffer of InterceptedFlows plus a fan-out channel for live subscribers (Workbench "Intercepted" rail over SSE). Bounded so a long-running host with
app.UseBowireInterceptor()doesn't grow unbounded — once Capacity flows are stored the oldest one is evicted before the new one is added.
- InterceptorActivation
Process-singleton flag that records whether
app.UseBowireInterceptor()ran during the host's startup. The workbench's Intercept rail probes this throughGET /api/intercepted/statusto decide whether the Captured / Live overrides / Settings sub-tabs render their normal content or the v2.2 "activate the interceptor first" empty state.
- InterceptorMockRule
One mock-injection rule (#308, Phase D). When the interceptor sees a request whose path + method match this rule's PathPattern
- Method, it short-circuits the pipeline and serves the rule's response directly — the host's endpoint never runs.
- InterceptorMockStore
In-memory registry of InterceptorMockRules consulted by the interceptor middleware on every request when
BowireInterceptorOptions.MocksEnabledis on (#308, Phase D). Rules are matched in insertion order — the first match wins, so the workbench can compose specific overrides before broad catch-alls.
- ReverseProxyRegistry
Process-wide registry of BowireReverseProxyHost instances started from the workbench's Tools → Reverse-proxy surface (#153 UI Phase). Hosts started here die when the surrounding Bowire process exits — the registry hooks ApplicationStopping to stop and dispose every entry so a Ctrl-C on the parent doesn't leak Kestrel listeners.
- ReverseProxyRegistryEntry
One running reverse-proxy entry — the host instance plus the metadata the workbench renders on the Tools list.