pub trait DataAdapter {
// Required methods
fn adapter_id(&self) -> &'static str;
fn build_fetch_request(
&self,
bbox: (f64, f64, f64, f64),
time_range: (u64, u64),
registry: &NetworkDisclosureRegistry,
) -> Result<AdapterHttpRequest, String>;
fn primary_endpoint(&self) -> &str;
fn estimate_tile_count(&self, bbox: (f64, f64, f64, f64)) -> u32;
// Provided methods
fn fetch_region(
&self,
bbox: (f64, f64, f64, f64),
time_range: (u64, u64),
registry: &NetworkDisclosureRegistry,
) -> Result<(), String> { ... }
fn needs_fetch_body(&self) -> bool { ... }
fn handle_fetch_body(&self, _body: &str) -> Result<(), String> { ... }
fn parse_response(&self, _body: &str) -> Result<Vec<NQuin>, String> { ... }
fn fetch_region_features(
&self,
bbox: (f64, f64, f64, f64),
time_range: (u64, u64),
registry: &NetworkDisclosureRegistry,
) -> Result<Vec<NQuin>, String> { ... }
}Required Methods§
Sourcefn adapter_id(&self) -> &'static str
fn adapter_id(&self) -> &'static str
Returns the unique identifier for this adapter (e.g., “dem_adapter”)
Sourcefn build_fetch_request(
&self,
bbox: (f64, f64, f64, f64),
time_range: (u64, u64),
registry: &NetworkDisclosureRegistry,
) -> Result<AdapterHttpRequest, String>
fn build_fetch_request( &self, bbox: (f64, f64, f64, f64), time_range: (u64, u64), registry: &NetworkDisclosureRegistry, ) -> Result<AdapterHttpRequest, String>
Build the outbound request for a spatial bounding box [x1, y1, x2, y2]
and temporal range [t0, t1]. Implementations must check NetworkDisclosureRegistry
before returning an actual network request.
Sourcefn primary_endpoint(&self) -> &str
fn primary_endpoint(&self) -> &str
Primary egress endpoint for disclosure checks and fetch reports.
Provided Methods§
Sourcefn fetch_region(
&self,
bbox: (f64, f64, f64, f64),
time_range: (u64, u64),
registry: &NetworkDisclosureRegistry,
) -> Result<(), String>
fn fetch_region( &self, bbox: (f64, f64, f64, f64), time_range: (u64, u64), registry: &NetworkDisclosureRegistry, ) -> Result<(), String>
Initiate fetching through the native blocking transport. Browser WASM
cannot legally block on network I/O, so wasm callers use fetch_region_async.
Sourcefn needs_fetch_body(&self) -> bool
fn needs_fetch_body(&self) -> bool
Whether the adapter consumes the response body instead of only checking that the endpoint accepted the request.
Sourcefn handle_fetch_body(&self, _body: &str) -> Result<(), String>
fn handle_fetch_body(&self, _body: &str) -> Result<(), String>
Parse or enqueue the fetched body. Most adapters currently only verify access; CKAN consumes JSON discovery results here.
Sourcefn parse_response(&self, _body: &str) -> Result<Vec<NQuin>, String>
fn parse_response(&self, _body: &str) -> Result<Vec<NQuin>, String>
Parse a fetched response body into provenance NQuins (title / license /
created / source / lat / long, hashed with the same generate_60bit_token
the SPARQL layer uses, so the results are queryable). Adapters that can
interpret their response format override this — GBIF, OSM/Overpass, STAC,
OGC 3D Tiles and SPARQL-results do — and the default yields none. This is
how a fetched response becomes graph data rather than being discarded.
Sourcefn fetch_region_features(
&self,
bbox: (f64, f64, f64, f64),
time_range: (u64, u64),
registry: &NetworkDisclosureRegistry,
) -> Result<Vec<NQuin>, String>
fn fetch_region_features( &self, bbox: (f64, f64, f64, f64), time_range: (u64, u64), registry: &NetworkDisclosureRegistry, ) -> Result<Vec<NQuin>, String>
Native fetch that returns the parsed provenance NQuins: build the
consent-gated request, execute it, and run parse_response on the body.
A caller can then route the quins into the graph. (WASM callers fetch via
fetch_region_async and call parse_response on the returned body.)