mod amplification;
mod probability;
mod probability_data;
mod sequences;
pub use amplification::{apply_amplification, get_rare_edges, ApplyAmplificationRequest};
pub use probability::{
build_probability_model, get_probability_model, list_probability_models, sample_latency,
sample_status_code, BuildProbabilityModelRequest, ProbabilityModelResponse,
};
pub use sequences::{
discover_sequences, generate_sequence_scenario, get_sequence, list_sequences,
DiscoverSequencesRequest, SequenceDiscoveryResponse,
};
use crate::behavioral_cloning::storage::BehavioralCloningStateProvider;
pub fn behavioral_cloning_router<S: BehavioralCloningStateProvider>(state: S) -> axum::Router {
use axum::routing::{get, post};
use axum::Router;
Router::new()
.route(
"/api/v1/behavioral-cloning/probability-models",
post(build_probability_model::<S>).get(list_probability_models::<S>),
)
.route(
"/api/v1/behavioral-cloning/probability-models/{endpoint}/{method}",
get(get_probability_model::<S>),
)
.route(
"/api/v1/behavioral-cloning/probability-models/{endpoint}/{method}/sample/status-code",
post(sample_status_code::<S>),
)
.route(
"/api/v1/behavioral-cloning/probability-models/{endpoint}/{method}/sample/latency",
post(sample_latency::<S>),
)
.route(
"/api/v1/behavioral-cloning/sequences",
get(list_sequences::<S>),
)
.route(
"/api/v1/behavioral-cloning/sequences/discover",
post(discover_sequences::<S>),
)
.route(
"/api/v1/behavioral-cloning/sequences/{sequence_id}",
get(get_sequence::<S>),
)
.route(
"/api/v1/behavioral-cloning/sequences/{sequence_id}/scenario",
post(generate_sequence_scenario::<S>),
)
.route(
"/api/v1/behavioral-cloning/amplification/apply",
post(apply_amplification::<S>),
)
.route(
"/api/v1/behavioral-cloning/amplification/rare-edges/{endpoint}/{method}",
get(get_rare_edges::<S>),
)
.with_state(state)
}