1
0
mirror of https://github.com/actix/actix-extras.git synced 2025-09-02 04:56:38 +02:00

Deploying to gh-pages from @ 45643d4035 🚀

This commit is contained in:
robjtede
2021-10-21 14:50:11 +00:00
parent f438a616e1
commit c3094d25f9
5 changed files with 89 additions and 25 deletions

View File

@@ -212,7 +212,33 @@
<span id="212">212</span>
<span id="213">213</span>
<span id="214">214</span>
</pre><pre class="rust"><code><span class="kw">use</span> <span class="ident">std</span>::{<span class="ident">convert::TryInto</span>, <span class="ident">error::Error</span> <span class="kw">as</span> <span class="ident">StdError</span>, <span class="ident">rc::Rc</span>};
<span id="215">215</span>
<span id="216">216</span>
<span id="217">217</span>
<span id="218">218</span>
<span id="219">219</span>
<span id="220">220</span>
<span id="221">221</span>
<span id="222">222</span>
<span id="223">223</span>
<span id="224">224</span>
<span id="225">225</span>
<span id="226">226</span>
<span id="227">227</span>
<span id="228">228</span>
<span id="229">229</span>
<span id="230">230</span>
<span id="231">231</span>
<span id="232">232</span>
<span id="233">233</span>
<span id="234">234</span>
<span id="235">235</span>
<span id="236">236</span>
<span id="237">237</span>
<span id="238">238</span>
<span id="239">239</span>
<span id="240">240</span>
</pre><pre class="rust"><code><span class="kw">use</span> <span class="ident">std</span>::{<span class="ident">collections::HashSet</span>, <span class="ident">convert::TryInto</span>, <span class="ident">error::Error</span> <span class="kw">as</span> <span class="ident">StdError</span>, <span class="ident">rc::Rc</span>};
<span class="kw">use</span> <span class="ident">actix_web</span>::{
<span class="ident">body</span>::{<span class="ident">AnyBody</span>, <span class="ident">MessageBody</span>},
@@ -227,7 +253,7 @@
<span class="kw">use</span> <span class="ident">futures_util::future</span>::{<span class="ident">ok</span>, <span class="ident">Either</span>, <span class="ident">FutureExt</span> <span class="kw">as</span> <span class="kw">_</span>, <span class="ident">LocalBoxFuture</span>, <span class="ident">Ready</span>, <span class="ident">TryFutureExt</span> <span class="kw">as</span> <span class="kw">_</span>};
<span class="kw">use</span> <span class="ident">log::debug</span>;
<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::Inner</span>;
<span class="kw">use</span> <span class="kw">crate</span>::{<span class="ident">builder::intersperse_header_values</span>, <span class="ident">AllOrSome</span>, <span class="ident">Inner</span>};
<span class="doccomment">/// Service wrapper for Cross-Origin Resource Sharing support.</span>
<span class="doccomment">///</span>
@@ -292,8 +318,34 @@
};
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="kw-2">ref</span> <span class="ident">expose</span>) <span class="op">=</span> <span class="ident">inner</span>.<span class="ident">expose_headers_baked</span> {
<span class="macro">log::trace!</span>(<span class="string">&quot;exposing selected headers: {:?}&quot;</span>, <span class="ident">expose</span>);
<span class="ident">res</span>.<span class="ident">headers_mut</span>()
.<span class="ident">insert</span>(<span class="ident">header::ACCESS_CONTROL_EXPOSE_HEADERS</span>, <span class="ident">expose</span>.<span class="ident">clone</span>());
} <span class="kw">else</span> <span class="kw">if</span> <span class="macro">matches!</span>(<span class="ident">inner</span>.<span class="ident">expose_headers</span>, <span class="ident">AllOrSome::All</span>) {
<span class="comment">// intersperse_header_values requires that argument is non-empty</span>
<span class="kw">if</span> <span class="op">!</span><span class="ident">res</span>.<span class="ident">request</span>().<span class="ident">headers</span>().<span class="ident">is_empty</span>() {
<span class="comment">// extract header names from request</span>
<span class="kw">let</span> <span class="ident">expose_all_request_headers</span> <span class="op">=</span> <span class="ident">res</span>
.<span class="ident">request</span>()
.<span class="ident">headers</span>()
.<span class="ident">keys</span>()
.<span class="ident">into_iter</span>()
.<span class="ident">map</span>(<span class="op">|</span><span class="ident">name</span><span class="op">|</span> <span class="ident">name</span>.<span class="ident">as_str</span>())
.<span class="ident">collect</span>::<span class="op">&lt;</span><span class="ident">HashSet</span><span class="op">&lt;</span><span class="kw">_</span><span class="op">&gt;</span><span class="op">&gt;</span>();
<span class="comment">// create comma separated string of header names</span>
<span class="kw">let</span> <span class="ident">expose_headers_value</span> <span class="op">=</span> <span class="ident">intersperse_header_values</span>(<span class="kw-2">&amp;</span><span class="ident">expose_all_request_headers</span>);
<span class="macro">log::trace!</span>(
<span class="string">&quot;exposing all headers from request: {:?}&quot;</span>,
<span class="ident">expose_headers_value</span>
);
<span class="comment">// add header names to expose response header</span>
<span class="ident">res</span>.<span class="ident">headers_mut</span>()
.<span class="ident">insert</span>(<span class="ident">header::ACCESS_CONTROL_EXPOSE_HEADERS</span>, <span class="ident">expose_headers_value</span>);
}
}
<span class="kw">if</span> <span class="ident">inner</span>.<span class="ident">supports_credentials</span> {