use datafold::lambda::ui::get_ui_asset;
use lambda_http::{run, service_fn, Body, Error, Request, RequestExt, Response};
async fn function_handler(event: Request) -> Result<Response<Body>, Error> {
let path = event.uri().path();
if path.starts_with("/api") {
let resp = Response::builder()
.status(200)
.header("content-type", "application/json")
.body(Body::from(r#"{"message": "Hello from DataFold API!"}"#))
.map_err(Box::new)?;
return Ok(resp);
}
if let Some(asset) = get_ui_asset(path) {
let resp = Response::builder()
.status(200)
.header("content-type", asset.mime_type)
.header("cache-control", "public, max-age=3600")
.body(Body::from(asset.content))
.map_err(Box::new)?;
return Ok(resp);
}
Ok(Response::builder()
.status(404)
.body(Body::from("Not Found"))
.unwrap())
}
#[tokio::main]
async fn main() -> Result<(), Error> {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::INFO)
.with_target(false)
.without_time()
.init();
run(service_fn(function_handler)).await
}