use std::io::Cursor;
use image::io::Reader as ImageReader;
use image::DynamicImage;
pub mod error;
use crate::error::Error;
pub async fn process_remote_image(
url: &url::Url,
pipeline: fn(DynamicImage) -> Option<DynamicImage>,
) -> Result<url::Url, Error> {
let data = reqwest::get(url.to_string()).await?.bytes().await?;
let img = ImageReader::new(Cursor::new(data)).with_guessed_format()?.decode()?;
if let Some(img) = pipeline(img) {
let mut out_bytes: Vec<u8> = Vec::new();
img.write_to(&mut out_bytes, image::ImageOutputFormat::Png)?;
return Ok(imgur2018::imgur_upload("332741bbdcde865", out_bytes).await?);
} else {
return Err(Error::PipelineErr);
}
}