use fastly::http::header;
use fastly::{Error, Request, Response};
use glob::Pattern;

/// The name of a backend server associated with this service.
const BACKEND_NAME: &str = "origin_0";

#[fastly::main]
fn main(mut req: Request) -> Result<Response, Error> {
    // Make any desired changes to the client request
    req.set_header(header::HOST, "example.com");

    // Remove any Google Analytics campaign params
    let pattern = Pattern::new("utm_*").expect("Invalid glob pattern");
    let mut qs: Vec<(String, String)> = req.get_query()?;
    qs.retain(|param| !pattern.matches(&param.0));

    // Add a `pop` param to say which edge data center processed the req
    if let Ok(pop_name) = std::env::var("FASTLY_POP") {
        qs.push(("dc".to_owned(), pop_name));
    }

    req.set_query(&qs)?;

    // Send the request to backend
    Ok(req.send(BACKEND_NAME)?)
}