sui_http/middleware/callback/mod.rs
1// Copyright (c) Mysten Labs, Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4use http::HeaderMap;
5use http::request;
6use http::response;
7
8mod body;
9mod future;
10mod layer;
11mod service;
12
13pub use self::body::ResponseBody;
14pub use self::future::ResponseFuture;
15pub use self::layer::CallbackLayer;
16pub use self::service::Callback;
17
18pub trait MakeCallbackHandler {
19 type Handler: ResponseHandler;
20
21 fn make_handler(&self, request: &request::Parts) -> Self::Handler;
22}
23
24pub trait ResponseHandler {
25 fn on_response(&mut self, response: &response::Parts);
26 fn on_error<E>(&mut self, error: &E)
27 where
28 E: std::fmt::Display + 'static;
29
30 fn on_body_chunk<B>(&mut self, _chunk: &B)
31 where
32 B: bytes::Buf,
33 {
34 // do nothing
35 }
36
37 fn on_end_of_stream(&mut self, _trailers: Option<&HeaderMap>) {
38 // do nothing
39 }
40}