1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
pub mod encoder;
pub mod error;
mod handler;
mod transform;
use crate::spec::Query;
use error::PipelineError;
use image::ImageFormat;
use mime::Mime;
type PipelineResult<T> = Result<T, PipelineError>;
pub struct PipelineResponse {
pub bytes: Vec<u8>,
pub mime: Mime,
}
pub fn handle_query(bytes: Vec<u8>, query: Query) -> PipelineResult<PipelineResponse> {
let format = image::guess_format(&bytes)?;
let mime = query.encoding.mime_type();
let response: handler::HandleResponse = match format {
ImageFormat::Gif => handler::handle_gif(bytes, query)?,
_ => handler::handle_image(bytes, query)?,
};
println!(
"Processing time: {} milliseconds",
response.execution_time.as_millis()
);
Ok(PipelineResponse {
bytes: response.bytes,
mime,
})
}