use crate::{content_types, handlers};
use actix_web::{guard, http::Method, web};
use actix_web_static_files::ResourceFiles;
const ANY: &str = "{tail:.*}";
include!(concat!(env!("OUT_DIR"), "/generated.rs"));
pub fn config_routes(app: &mut actix_web::web::ServiceConfig) {
app.service(web::resource("/ws").to(handlers::web_sockets::web_socket_handler))
.service(web::resource("/download/{path:[^{}]+}").to(handlers::download::handle_download))
.service(web::resource("/export").to(handlers::export::handle_export))
.service(
ResourceFiles::new("/", generate())
.skip_handler_when_not_found()
.do_not_resolve_defaults(),
)
.service(
web::resource(ANY)
.guard(guard::Method(Method::GET))
.guard(guard::fn_guard(|guard_ctx| {
content_types::get_accept(guard_ctx.head().headers())
== content_types::ContentType::Html
}))
.to(handlers::single_page_app::single_page),
)
.service(
web::resource("/upload")
.guard(guard::Method(Method::POST))
.to(handlers::upload::upload_handler),
)
.service(
web::resource("/commit")
.guard(guard::Method(Method::POST))
.to(handlers::commit::post_commit),
)
.service(
web::resource("/search")
.guard(guard::Method(Method::GET))
.to(handlers::search::search_query),
)
.service(
web::resource(ANY)
.guard(guard::Method(Method::GET))
.to(handlers::get_resource::handle_get_resource),
)
.service(
web::resource(ANY)
.guard(guard::Method(Method::POST))
.to(handlers::post_resource::handle_post_resource),
)
.service(web::resource("/").to(handlers::get_resource::handle_get_resource));
}