use isahc::AsyncReadResponseExt;
use kproc_pmacros::Processor;
use crate::processor::{InputStreams, OutputStreams};
use crate::{processor, Result};
#[derive(Clone, InputStreams)]
pub struct Inputs
{
pub url: String,
}
#[derive(Clone, OutputStreams)]
pub struct Outputs
{
pub url: String,
pub data: String,
pub status: u16,
}
#[derive(Processor)]
#[streams(Inputs, Outputs)]
pub struct Http {}
impl processor::ValueProcessor for Http
{
async fn process_one(&self, inputs: Self::Inputs) -> Result<Self::Outputs>
{
let mut response = isahc::get_async(inputs.url.clone()).await?;
Ok(Outputs {
url: inputs.url,
data: response.text().await?,
status: response.status().as_u16(),
})
}
}