40 lines
1.2 KiB
Rust
40 lines
1.2 KiB
Rust
use axum::{
|
|
handler::HandlerWithoutStateExt,
|
|
http::StatusCode,
|
|
middleware,
|
|
routing::{get, post},
|
|
Router,
|
|
};
|
|
use saleor_app_sdk::middleware::verify_webhook_signature::webhook_signature_verifier;
|
|
use tower_http::services::ServeDir;
|
|
|
|
use crate::app::AppState;
|
|
|
|
pub mod manifest;
|
|
pub mod register;
|
|
pub mod webhooks;
|
|
use manifest::manifest;
|
|
use register::register;
|
|
use webhooks::webhooks;
|
|
|
|
pub fn create_routes(state: AppState) -> Router {
|
|
async fn handle_404() -> (StatusCode, &'static str) {
|
|
(StatusCode::NOT_FOUND, "Not found")
|
|
}
|
|
let service = handle_404.into_service();
|
|
let serve_dir = ServeDir::new("simple-payment-gateway/public").not_found_service(service);
|
|
|
|
Router::new()
|
|
.layer(middleware::from_fn(webhook_signature_verifier))
|
|
//handles just path, eg. localhost:3000/
|
|
.route("/api/webhooks", post(webhooks))
|
|
.route(
|
|
"/",
|
|
get(|| async { "Your app got installed successfully!" }),
|
|
)
|
|
//handles files, eg. localhost:3000/logo.png
|
|
.fallback_service(serve_dir)
|
|
.route("/api/manifest", get(manifest))
|
|
.route("/api/register", post(register))
|
|
.with_state(state)
|
|
}
|