- main
- manifest
- deps
- main
- Install
- Run
use fastly::error::anyhow;
use fastly::geo::geo_lookup;
use fastly::{Error, Request, Response};
use serde_json::json;
#[fastly::main]
fn main(req: Request) -> Result<Response, Error> {
let client_ip = req
.get_client_ip_addr()
.ok_or_else(|| anyhow!("could not get client ip"))?;
let geo = geo_lookup(client_ip).ok_or_else(|| anyhow!("no geographic data available"))?;
let body = json!({
"as": {
"name": geo.as_name(),
},
"geo" : {
"city": geo.city(),
"client_ip": client_ip,
"country_name": geo.country_name(),
},
});
Ok(Response::new().with_body_json(&body)?)
}