use std::{error::Error, time::Duration};
use fetcher::{
actions::{sink, transform, transforms::Html},
job::{Job, error_handling, trigger},
sinks::Stdout,
sources::{Fetch, Http},
task::Task,
};
#[tokio::main(flavor = "current_thread")]
async fn main() -> Result<(), Box<dyn Error>> {
let source = Http::new_get("http://example.com")?.into_source_without_read_filter();
let actions = (
transform(Html::builder().title("h1")?.text("p")?.build()),
sink(Stdout),
);
let task = Task::builder("example")
.source(source)
.action(actions)
.build_without_replies();
let mut job = Job::builder("example job")
.tasks(task)
.trigger(trigger::Every(Duration::from_secs(1)))
.cancel_token(None)
.error_handling(error_handling::LogAndIgnore)
.build();
job.run().await.expect("never errors");
Ok(())
}