fn to_tokens()

in yaml_test_runner/src/step/do.rs [233:271]


    fn to_tokens(&self, tokens: &mut Tokens) {
        let function = &self.function;
        let parts = &self.parts;
        let params = &self.params;
        let body = &self.body;

        let headers: Vec<Tokens> = self
            .headers
            .iter()
            .map(|(k, v)| {
                // header names **must** be lowercase to satisfy Header lib
                let k = k.to_lowercase();

                // handle "set" value in headers
                if let Some(c) = SET_DELIMITED_REGEX.captures(v) {
                    let token = syn::Ident::from(c.get(1).unwrap().as_str());
                    let replacement = SET_DELIMITED_REGEX.replace_all(v, "{}");
                    quote! { .header(
                        HeaderName::from_static(#k),
                        HeaderValue::from_str(format!(#replacement, #token.as_str().unwrap()).as_ref())?)
                    }
                } else {
                    quote! { .header(
                        HeaderName::from_static(#k),
                        HeaderValue::from_static(#v))
                    }
                }
            })
            .collect();

        tokens.append(quote! {
            let response = client.#function(#parts)
                #(#headers)*
                #params
                #body
                .send()
                .await?;
        });
    }