Skip to main content

DataAdapter

Trait DataAdapter 

Source
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§

Source

fn adapter_id(&self) -> &'static str

Returns the unique identifier for this adapter (e.g., “dem_adapter”)

Source

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.

Source

fn primary_endpoint(&self) -> &str

Primary egress endpoint for disclosure checks and fetch reports.

Source

fn estimate_tile_count(&self, bbox: (f64, f64, f64, f64)) -> u32

Honest estimate of how many tile/API units would be requested (no fake payloads).

Provided Methods§

Source

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.

Source

fn needs_fetch_body(&self) -> bool

Whether the adapter consumes the response body instead of only checking that the endpoint accepted the request.

Source

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.

Source

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.

Source

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.)

Implementors§