MCPcopy Index your code
hub / github.com/aws/aws-lambda-rust-runtime / into_alb_request

Function into_alb_request

lambda-http/src/request.rs:239–287  ·  view source on GitHub ↗
(alb: AlbTargetGroupRequest)

Source from the content-addressed store, hash-verified

237
238#[cfg(feature = "alb")]
239fn into_alb_request(alb: AlbTargetGroupRequest) -> http::Request<Body> {
240 let http_method = alb.http_method;
241 let host = alb.headers.get(http::header::HOST).and_then(|s| s.to_str().ok());
242 let raw_path = alb.path.unwrap_or_default();
243
244 let query_string_parameters = decode_query_map(alb.query_string_parameters);
245 let multi_value_query_string_parameters = decode_query_map(alb.multi_value_query_string_parameters);
246
247 let builder = http::Request::builder()
248 .uri(build_request_uri(
249 &raw_path,
250 &alb.headers,
251 host,
252 Some((&multi_value_query_string_parameters, &query_string_parameters)),
253 ))
254 .extension(RawHttpPath(raw_path))
255 // multi valued query string parameters are always a super
256 // set of singly valued query string parameters,
257 // when present, multi-valued query string parameters are preferred
258 .extension(QueryStringParameters(
259 if multi_value_query_string_parameters.is_empty() {
260 query_string_parameters
261 } else {
262 multi_value_query_string_parameters
263 },
264 ))
265 .extension(RequestContext::Alb(alb.request_context));
266
267 // merge headers into multi_value_headers and make
268 // multi-value_headers our cannoncial source of request headers
269 let mut headers = alb.multi_value_headers;
270 headers.extend(alb.headers);
271
272 let base64 = alb.is_base64_encoded;
273
274 let mut req = builder
275 .body(
276 alb.body
277 .as_deref()
278 .map_or_else(Body::default, |b| Body::from_maybe_encoded(base64, b)),
279 )
280 .expect("failed to build request");
281
282 // no builder method that sets headers in batch
283 let _ = std::mem::replace(req.headers_mut(), headers);
284 let _ = std::mem::replace(req.method_mut(), http_method);
285
286 req
287}
288
289#[cfg(any(feature = "alb", feature = "vpc_lattice"))]
290fn decode_query_map(query_map: QueryMap) -> QueryMap {

Callers 1

fromMethod · 0.85

Calls 6

decode_query_mapFunction · 0.85
build_request_uriFunction · 0.85
RawHttpPathClass · 0.85
uriMethod · 0.80
is_emptyMethod · 0.80

Tested by

no test coverage detected