use actix_web::{web::Query, HttpResponse, Responder}; use serde::Deserialize; use crate::util::request::fetch; use crate::util::result::Error; #[derive(Deserialize)] pub struct Parameters { url: String, } pub async fn get(info: Query<Parameters>) -> Result<impl Responder, Error> { let url = info.into_inner().url; let (resp, mime) = fetch(&url).await?; if let mime::IMAGE = mime.type_() { let body = resp .bytes() .await .map_err(|_| Error::FailedToConsumeBytes)?; Ok(HttpResponse::Ok().body(body)) } else { Err(Error::NotAllowedToProxy) } }