///|
fn main {
  let media = @acceptkit.negotiate_media(
    "application/json;q=0.9, text/html, application/*;q=0.6, */*;q=0.1",
    ["application/xml", "application/json", "text/html"],
  )
  match media {
    Ok(decision) => println(@acceptkit.format_media_decision(decision))
    Err(_) => println("media negotiation failed")
  }
  let language = @acceptkit.negotiate_language(
    "zh-CN, zh;q=0.8, en;q=0.6, *;q=0.1",
    ["en-US", "zh-Hant", "zh-CN"],
  )
  match language {
    Ok(decision) => println(@acceptkit.format_language_decision(decision))
    Err(_) => println("language negotiation failed")
  }
  let preferences = @acceptkit.RequestPreferences(
    accept="application/json, text/html;q=0.6",
    accept_language="zh-CN, en;q=0.8",
    accept_encoding="br, gzip;q=0.7, identity;q=0.1",
    accept_charset="utf-8",
  )
  let response = @acceptkit.negotiate_response(
    preferences,
    ["text/html", "application/json"],
    ["en-US", "zh-CN"],
    ["gzip", "br"],
    ["utf-8"],
  )
  match response {
    Ok(result) => {
      println(@acceptkit.format_response_summary(result.summary))
      println(@acceptkit.response_header_block(result.summary))
    }
    Err(_) => println("response negotiation failed")
  }
}