Skip to main content

spider_pipeline/
console.rs

1//! Pipeline that logs items as they pass through.
2use crate::pipeline::Pipeline;
3use async_trait::async_trait;
4use log::info;
5use spider_util::{error::PipelineError, item::ScrapedItem};
6
7/// Pipeline that logs each scraped item with `log::info!`.
8pub struct ConsolePipeline;
9
10impl ConsolePipeline {
11    /// Creates a new `ConsolePipeline`.
12    pub fn new() -> Self {
13        Self
14    }
15}
16
17impl Default for ConsolePipeline {
18    fn default() -> Self {
19        Self::new()
20    }
21}
22
23#[async_trait]
24impl<I: ScrapedItem> Pipeline<I> for ConsolePipeline {
25    fn name(&self) -> &str {
26        "ConsolePipeline"
27    }
28
29    async fn process_item(&self, item: I) -> Result<Option<I>, PipelineError> {
30        info!("Pipeline processing item: {:?}", item);
31        Ok(Some(item))
32    }
33}