Skip to main content

Crate koprs_external

Crate koprs_external 

Source
Expand description

§koprs-external

Generic polling watchers for external sources such as HTTP REST APIs and S3 buckets, designed as a companion to koprs Kubernetes operators.

Kubernetes operators often need to reconcile cluster state with resources that live outside the cluster — a configuration endpoint, an object store, or a remote registry. koprs-external provides a lightweight polling abstraction that fits naturally alongside koprs controllers.

§Core model

The watcher::ExternalSource trait represents any source that can be polled for changes. Implementations return ExternalEvent values that distinguish between items being added, modified, or removed. The source tracks its own state between polls so callers do not need to diff results themselves.

watch_external spawns a background task that ticks on a configurable interval and forwards events to an tokio::sync::mpsc channel, mirroring the pattern used by koprs::watcher.

§Quick start

use std::time::Duration;
use koprs_external::http::HttpPoller;
use koprs_external::watcher::{watch_external, ExternalEvent};
use tokio::sync::mpsc;

#[tokio::main]
async fn main() {
    let (tx, mut rx) = mpsc::channel(16);
    let poller = HttpPoller::new("https://api.example.com/config")
        .with_bearer_token("my-token")
        .with_name("config-api");

    let _handle = watch_external(poller, Duration::from_secs(30), tx);

    while let Some(event) = rx.recv().await {
        match event {
            ExternalEvent::Added(r)    => println!("config appeared: {} bytes", r.body.len()),
            ExternalEvent::Modified(r) => println!("config changed:  {} bytes", r.body.len()),
            ExternalEvent::Removed(_)  => println!("config endpoint gone"),
        }
    }
}

Re-exports§

pub use error::ExternalError;
pub use watcher::ExternalEvent;
pub use watcher::WatchConfig;
pub use watcher::watch_external;
pub use watcher::watch_external_with_config;

Modules§

error
http
HTTP API poller.
watcher