mod cache;
mod client;
mod error;
mod http;
mod types;
pub use cache::Cache;
pub use client::{is_valid_zipcode, JpzipClient, JpzipClientBuilder, SpecMismatchCallback};
pub use error::Error;
pub use types::{
Endpoints, Meta, Town, ZipcodeDict, ZipcodeEntry, DEFAULT_BASE_URL, SPEC_VERSION,
};
use std::sync::OnceLock;
fn default_client() -> &'static JpzipClient {
static DEFAULT: OnceLock<JpzipClient> = OnceLock::new();
DEFAULT.get_or_init(JpzipClient::new)
}
pub async fn lookup(zipcode: &str) -> Result<Option<ZipcodeEntry>, Error> {
default_client().lookup(zipcode).await
}
pub async fn lookup_group(prefix: &str) -> Result<ZipcodeDict, Error> {
default_client().lookup_group(prefix).await
}
pub async fn lookup_all() -> Result<ZipcodeDict, Error> {
default_client().lookup_all().await
}
pub async fn preload(scope: &str) -> Result<(), Error> {
default_client().preload(scope).await
}
pub async fn get_meta() -> Result<Option<Meta>, Error> {
default_client().get_meta().await
}