use base64::{Engine, engine::general_purpose};
use fastly::http::header;
use fastly::{Error, Request, Response};

#[fastly::main]
fn main(mut req: Request) -> Result<Response, Error> {
 // create a HashMap with a query string provided
    let mut qs_map: std::collections::HashMap<String, String> = req.get_query()?;

    // if we have the query param we need
    if qs_map.contains_key("user") && qs_map.contains_key("pw") {
        let auth_basic = format!(
          "Basic {}", 
          general_purpose::STANDARD.encode(format!(
          "{}:{}", 
          qs_map.remove("user").unwrap(), 
          qs_map.remove("pw").unwrap()
          ))
        );

        // - repopulate query string with anything remaining
        req.set_query(&qs_map)?;

        // Add Authorization header
        req.set_header(header::AUTHORIZATION, &auth_basic);
    }
    Ok(req.send("origin_0")?)
}