use crate::Error;
use rama::{Layer as _, Service as _, layer::MapErrLayer};
use tansu_auth::{SaslAuthenticateService, SaslHandshakeService};
use tansu_sans_io::{ApiKey as _, SaslAuthenticateRequest, SaslHandshakeRequest};
use tansu_service::{FrameRequestLayer, FrameRouteBuilder};
pub fn services(
builder: FrameRouteBuilder<(), Error>,
) -> Result<FrameRouteBuilder<(), Error>, Error> {
[authenticate, handshake]
.iter()
.try_fold(builder, |builder, service| service(builder))
}
pub fn authenticate(
builder: FrameRouteBuilder<(), Error>,
) -> Result<FrameRouteBuilder<(), Error>, Error> {
builder
.with_route(
SaslAuthenticateRequest::KEY,
(
MapErrLayer::new(Error::from),
FrameRequestLayer::<SaslAuthenticateRequest>::new(),
)
.into_layer(SaslAuthenticateService::default())
.boxed(),
)
.map_err(Into::into)
}
pub fn handshake(
builder: FrameRouteBuilder<(), Error>,
) -> Result<FrameRouteBuilder<(), Error>, Error> {
builder
.with_route(
SaslHandshakeRequest::KEY,
(
MapErrLayer::new(Error::from),
FrameRequestLayer::<SaslHandshakeRequest>::new(),
)
.into_layer(SaslHandshakeService)
.boxed(),
)
.map_err(Into::into)
}