Skip to main content

Crate lintel_schema_cache

Crate lintel_schema_cache 

Source
Expand description

§lintel-schema-cache

Crates.io docs.rs CI License

Disk-backed cache for JSON Schema files. Fetches schemas over HTTP and stores them locally for fast subsequent lookups.

§Features

  • Transparent caching — schemas are stored as <cache_dir>/<hash>.json where <hash> is a deterministic hash of the URI
  • Pluggable HTTP — bring your own HTTP client via the HttpClient trait, or use the built-in UreqClient
  • jsonschema integration — implements both jsonschema::Retrieve and jsonschema::AsyncRetrieve for seamless use as a schema resolver

§Usage

use lintel_schema_cache::{SchemaCache, ReqwestClient};

let cache = SchemaCache::new(None, ReqwestClient::default(), false, None);
// Use cache.fetch(uri) to retrieve schemas — returns (Value, CacheStatus)
// CacheStatus: Hit (from disk), Miss (fetched and cached), or Disabled (no cache dir)

§Custom HTTP Client

use lintel_schema_cache::{SchemaCache, HttpClient};

#[derive(Clone)]
struct MyClient;

#[async_trait::async_trait]
impl HttpClient for MyClient {
    async fn get(&self, uri: &str) -> Result<String, Box<dyn std::error::Error + Send + Sync>> {
        // your HTTP implementation
        todo!()
    }
}

let cache = SchemaCache::new(None, MyClient, false, None);

§License

Apache-2.0

Structs§

ConditionalResponse
Response from a conditional HTTP request.
ReqwestClient
Default HTTP client using reqwest.
SchemaCache
A disk-backed cache for JSON Schema files.

Enums§

CacheStatus
Whether a schema was served from disk cache or fetched from the network.

Constants§

DEFAULT_SCHEMA_CACHE_TTL
Default TTL for cached schemas (12 hours).

Traits§

HttpClient
Trait for fetching content over HTTP.

Functions§

ensure_cache_dir
Return a usable cache directory for schemas, creating it if necessary.