MCPcopy Create free account
hub / github.com/LeenHawk/sgproxy / build_upstream_headers

Function build_upstream_headers

src/proxy.rs:107–155  ·  view source on GitHub ↗
(
    original: &Headers,
    access_token: &str,
    allow_context_1m: bool,
)

Source from the content-addressed store, hash-verified

105}
106
107fn build_upstream_headers(
108 original: &Headers,
109 access_token: &str,
110 allow_context_1m: bool,
111) -> Result<Headers> {
112 let headers = Headers::new();
113 let mut seen_user_agent = false;
114 let mut seen_anthropic_version = false;
115 let mut beta_values = Vec::new();
116
117 for (name, value) in original.entries() {
118 let lower = name.to_ascii_lowercase();
119 if is_hop_by_hop(&lower)
120 || matches!(
121 lower.as_str(),
122 "host" | "content-length" | "authorization" | "cookie" | "x-api-key"
123 )
124 {
125 continue;
126 }
127 if lower == "anthropic-beta" {
128 collect_beta_values(&value, &mut beta_values, allow_context_1m);
129 continue;
130 }
131 if lower == "user-agent" {
132 seen_user_agent = true;
133 }
134 if lower == "anthropic-version" {
135 seen_anthropic_version = true;
136 }
137 headers.append(&name, &value)?;
138 }
139
140 collect_beta_values(DEFAULT_REQUIRED_BETA, &mut beta_values, allow_context_1m);
141 if allow_context_1m {
142 collect_beta_values(DEFAULT_CONTEXT_1M_BETA, &mut beta_values, allow_context_1m);
143 }
144 headers.set("authorization", &format!("Bearer {access_token}"))?;
145 if !seen_user_agent {
146 headers.set("user-agent", DEFAULT_USER_AGENT)?;
147 }
148 if !seen_anthropic_version {
149 headers.set("anthropic-version", DEFAULT_ANTHROPIC_VERSION)?;
150 }
151 if !beta_values.is_empty() {
152 headers.set("anthropic-beta", &beta_values.join(","))?;
153 }
154 Ok(headers)
155}
156
157async fn send_upstream_request(
158 upstream_url: &str,

Callers 1

proxy_requestFunction · 0.85

Calls 2

is_hop_by_hopFunction · 0.85
collect_beta_valuesFunction · 0.85

Tested by

no test coverage detected