mirror of
https://github.com/actix/actix-extras.git
synced 2025-08-31 19:37:00 +02:00
Deploying to gh-pages from @ 8741cd32cc
🚀
This commit is contained in:
@@ -170,15 +170,15 @@
|
||||
<span id="167">167</span>
|
||||
<span id="168">168</span>
|
||||
</pre><div class="example-wrap"><pre class="rust ">
|
||||
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">rc</span>::<span class="ident">Rc</span>;
|
||||
<span class="kw">use</span> <span class="ident">std::rc::Rc</span>;
|
||||
|
||||
<span class="kw">use</span> <span class="ident">actix_web</span>::{
|
||||
<span class="ident">dev</span>::{<span class="ident">Service</span>, <span class="ident">ServiceRequest</span>, <span class="ident">ServiceResponse</span>, <span class="ident">Transform</span>},
|
||||
<span class="ident">Error</span>, <span class="ident">HttpMessage</span>, <span class="prelude-ty">Result</span>,
|
||||
};
|
||||
<span class="kw">use</span> <span class="ident">futures_util</span>::<span class="ident">future</span>::{<span class="ident">ready</span>, <span class="ident">FutureExt</span>, <span class="ident">LocalBoxFuture</span>, <span class="ident">Ready</span>};
|
||||
<span class="kw">use</span> <span class="ident">futures_util::future</span>::{<span class="ident">ready</span>, <span class="ident">FutureExt</span>, <span class="ident">LocalBoxFuture</span>, <span class="ident">Ready</span>};
|
||||
|
||||
<span class="kw">use</span> <span class="kw">crate</span>::{<span class="ident">identity</span>::<span class="ident">IdentityItem</span>, <span class="ident">IdentityPolicy</span>};
|
||||
<span class="kw">use</span> <span class="kw">crate</span>::{<span class="ident">identity::IdentityItem</span>, <span class="ident">IdentityPolicy</span>};
|
||||
|
||||
<span class="doccomment">/// Request identity middleware</span>
|
||||
<span class="doccomment">///</span>
|
||||
@@ -203,7 +203,7 @@
|
||||
<span class="doccomment">/// Create new identity service with specified backend.</span>
|
||||
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">backend</span>: <span class="ident">T</span>) <span class="op">-</span><span class="op">></span> <span class="self">Self</span> {
|
||||
<span class="ident">IdentityService</span> {
|
||||
<span class="ident">backend</span>: <span class="ident">Rc</span>::<span class="ident">new</span>(<span class="ident">backend</span>),
|
||||
<span class="ident">backend</span>: <span class="ident">Rc::new</span>(<span class="ident">backend</span>),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -211,7 +211,7 @@
|
||||
<span class="kw">impl</span><span class="op"><</span><span class="ident">S</span>, <span class="ident">T</span>, <span class="ident">B</span><span class="op">></span> <span class="ident">Transform</span><span class="op"><</span><span class="ident">S</span>, <span class="ident">ServiceRequest</span><span class="op">></span> <span class="kw">for</span> <span class="ident">IdentityService</span><span class="op"><</span><span class="ident">T</span><span class="op">></span>
|
||||
<span class="kw">where</span>
|
||||
<span class="ident">S</span>: <span class="ident">Service</span><span class="op"><</span><span class="ident">ServiceRequest</span>, <span class="ident">Response</span> <span class="op">=</span> <span class="ident">ServiceResponse</span><span class="op"><</span><span class="ident">B</span><span class="op">></span>, <span class="ident">Error</span> <span class="op">=</span> <span class="ident">Error</span><span class="op">></span> <span class="op">+</span> <span class="lifetime">'static</span>,
|
||||
<span class="ident">S</span>::<span class="ident">Future</span>: <span class="lifetime">'static</span>,
|
||||
<span class="ident">S::Future</span>: <span class="lifetime">'static</span>,
|
||||
<span class="ident">T</span>: <span class="ident">IdentityPolicy</span>,
|
||||
<span class="ident">B</span>: <span class="lifetime">'static</span>,
|
||||
{
|
||||
@@ -219,12 +219,12 @@
|
||||
<span class="kw">type</span> <span class="ident">Error</span> <span class="op">=</span> <span class="ident">Error</span>;
|
||||
<span class="kw">type</span> <span class="ident">InitError</span> <span class="op">=</span> ();
|
||||
<span class="kw">type</span> <span class="ident">Transform</span> <span class="op">=</span> <span class="ident">IdentityServiceMiddleware</span><span class="op"><</span><span class="ident">S</span>, <span class="ident">T</span><span class="op">></span>;
|
||||
<span class="kw">type</span> <span class="ident">Future</span> <span class="op">=</span> <span class="ident">Ready</span><span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>::<span class="ident">Transform</span>, <span class="self">Self</span>::<span class="ident">InitError</span><span class="op">></span><span class="op">></span>;
|
||||
<span class="kw">type</span> <span class="ident">Future</span> <span class="op">=</span> <span class="ident">Ready</span><span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span><span class="ident">::Transform</span>, <span class="self">Self</span><span class="ident">::InitError</span><span class="op">></span><span class="op">></span>;
|
||||
|
||||
<span class="kw">fn</span> <span class="ident">new_transform</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">service</span>: <span class="ident">S</span>) <span class="op">-</span><span class="op">></span> <span class="self">Self</span>::<span class="ident">Future</span> {
|
||||
<span class="kw">fn</span> <span class="ident">new_transform</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">service</span>: <span class="ident">S</span>) <span class="op">-</span><span class="op">></span> <span class="self">Self</span><span class="ident">::Future</span> {
|
||||
<span class="ident">ready</span>(<span class="prelude-val">Ok</span>(<span class="ident">IdentityServiceMiddleware</span> {
|
||||
<span class="ident">backend</span>: <span class="self">self</span>.<span class="ident">backend</span>.<span class="ident">clone</span>(),
|
||||
<span class="ident">service</span>: <span class="ident">Rc</span>::<span class="ident">new</span>(<span class="ident">service</span>),
|
||||
<span class="ident">service</span>: <span class="ident">Rc::new</span>(<span class="ident">service</span>),
|
||||
}))
|
||||
}
|
||||
}
|
||||
@@ -237,8 +237,8 @@
|
||||
<span class="kw">impl</span><span class="op"><</span><span class="ident">S</span>, <span class="ident">T</span><span class="op">></span> <span class="ident">Clone</span> <span class="kw">for</span> <span class="ident">IdentityServiceMiddleware</span><span class="op"><</span><span class="ident">S</span>, <span class="ident">T</span><span class="op">></span> {
|
||||
<span class="kw">fn</span> <span class="ident">clone</span>(<span class="kw-2">&</span><span class="self">self</span>) <span class="op">-</span><span class="op">></span> <span class="self">Self</span> {
|
||||
<span class="self">Self</span> {
|
||||
<span class="ident">backend</span>: <span class="ident">Rc</span>::<span class="ident">clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">backend</span>),
|
||||
<span class="ident">service</span>: <span class="ident">Rc</span>::<span class="ident">clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">service</span>),
|
||||
<span class="ident">backend</span>: <span class="ident">Rc::clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">backend</span>),
|
||||
<span class="ident">service</span>: <span class="ident">Rc::clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">service</span>),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -247,18 +247,18 @@
|
||||
<span class="kw">where</span>
|
||||
<span class="ident">B</span>: <span class="lifetime">'static</span>,
|
||||
<span class="ident">S</span>: <span class="ident">Service</span><span class="op"><</span><span class="ident">ServiceRequest</span>, <span class="ident">Response</span> <span class="op">=</span> <span class="ident">ServiceResponse</span><span class="op"><</span><span class="ident">B</span><span class="op">></span>, <span class="ident">Error</span> <span class="op">=</span> <span class="ident">Error</span><span class="op">></span> <span class="op">+</span> <span class="lifetime">'static</span>,
|
||||
<span class="ident">S</span>::<span class="ident">Future</span>: <span class="lifetime">'static</span>,
|
||||
<span class="ident">S::Future</span>: <span class="lifetime">'static</span>,
|
||||
<span class="ident">T</span>: <span class="ident">IdentityPolicy</span>,
|
||||
{
|
||||
<span class="kw">type</span> <span class="ident">Response</span> <span class="op">=</span> <span class="ident">ServiceResponse</span><span class="op"><</span><span class="ident">B</span><span class="op">></span>;
|
||||
<span class="kw">type</span> <span class="ident">Error</span> <span class="op">=</span> <span class="ident">Error</span>;
|
||||
<span class="kw">type</span> <span class="ident">Future</span> <span class="op">=</span> <span class="ident">LocalBoxFuture</span><span class="op"><</span><span class="lifetime">'static</span>, <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span>::<span class="ident">Response</span>, <span class="self">Self</span>::<span class="ident">Error</span><span class="op">></span><span class="op">></span>;
|
||||
<span class="kw">type</span> <span class="ident">Future</span> <span class="op">=</span> <span class="ident">LocalBoxFuture</span><span class="op"><</span><span class="lifetime">'static</span>, <span class="prelude-ty">Result</span><span class="op"><</span><span class="self">Self</span><span class="ident">::Response</span>, <span class="self">Self</span><span class="ident">::Error</span><span class="op">></span><span class="op">></span>;
|
||||
|
||||
<span class="ident">actix_service</span>::<span class="macro">forward_ready</span><span class="macro">!</span>(<span class="ident">service</span>);
|
||||
<span class="macro">actix_service::forward_ready!</span>(<span class="ident">service</span>);
|
||||
|
||||
<span class="kw">fn</span> <span class="ident">call</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="kw-2">mut</span> <span class="ident">req</span>: <span class="ident">ServiceRequest</span>) <span class="op">-</span><span class="op">></span> <span class="self">Self</span>::<span class="ident">Future</span> {
|
||||
<span class="kw">let</span> <span class="ident">srv</span> <span class="op">=</span> <span class="ident">Rc</span>::<span class="ident">clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">service</span>);
|
||||
<span class="kw">let</span> <span class="ident">backend</span> <span class="op">=</span> <span class="ident">Rc</span>::<span class="ident">clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">backend</span>);
|
||||
<span class="kw">fn</span> <span class="ident">call</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="kw-2">mut</span> <span class="ident">req</span>: <span class="ident">ServiceRequest</span>) <span class="op">-</span><span class="op">></span> <span class="self">Self</span><span class="ident">::Future</span> {
|
||||
<span class="kw">let</span> <span class="ident">srv</span> <span class="op">=</span> <span class="ident">Rc::clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">service</span>);
|
||||
<span class="kw">let</span> <span class="ident">backend</span> <span class="op">=</span> <span class="ident">Rc::clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">backend</span>);
|
||||
<span class="kw">let</span> <span class="ident">fut</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">backend</span>.<span class="ident">from_request</span>(<span class="kw-2">&</span><span class="kw-2">mut</span> <span class="ident">req</span>);
|
||||
|
||||
<span class="kw">async</span> <span class="kw">move</span> {
|
||||
@@ -288,23 +288,23 @@
|
||||
|
||||
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
|
||||
<span class="kw">mod</span> <span class="ident">tests</span> {
|
||||
<span class="kw">use</span> <span class="ident">std</span>::{<span class="ident">rc</span>::<span class="ident">Rc</span>, <span class="ident">time</span>::<span class="ident">Duration</span>};
|
||||
<span class="kw">use</span> <span class="ident">std</span>::{<span class="ident">rc::Rc</span>, <span class="ident">time::Duration</span>};
|
||||
|
||||
<span class="kw">use</span> <span class="ident">actix_service</span>::<span class="ident">into_service</span>;
|
||||
<span class="kw">use</span> <span class="ident">actix_service::into_service</span>;
|
||||
<span class="kw">use</span> <span class="ident">actix_web</span>::{<span class="ident">dev</span>, <span class="ident">error</span>, <span class="ident">test</span>, <span class="ident">Error</span>, <span class="prelude-ty">Result</span>};
|
||||
|
||||
<span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
|
||||
|
||||
<span class="attribute">#[<span class="ident">actix_rt</span>::<span class="ident">test</span>]</span>
|
||||
<span class="attribute">#[<span class="ident">actix_rt::test</span>]</span>
|
||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">test_borrowed_mut_error</span>() {
|
||||
<span class="kw">use</span> <span class="ident">futures_util</span>::<span class="ident">future</span>::{<span class="ident">lazy</span>, <span class="ident">ok</span>, <span class="ident">Ready</span>};
|
||||
<span class="kw">use</span> <span class="ident">futures_util::future</span>::{<span class="ident">lazy</span>, <span class="ident">ok</span>, <span class="ident">Ready</span>};
|
||||
|
||||
<span class="kw">struct</span> <span class="ident">Ident</span>;
|
||||
<span class="kw">impl</span> <span class="ident">IdentityPolicy</span> <span class="kw">for</span> <span class="ident">Ident</span> {
|
||||
<span class="kw">type</span> <span class="ident">Future</span> <span class="op">=</span> <span class="ident">Ready</span><span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>, <span class="ident">Error</span><span class="op">></span><span class="op">></span>;
|
||||
<span class="kw">type</span> <span class="ident">ResponseFuture</span> <span class="op">=</span> <span class="ident">Ready</span><span class="op"><</span><span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">Error</span><span class="op">></span><span class="op">></span>;
|
||||
|
||||
<span class="kw">fn</span> <span class="ident">from_request</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="kw">_</span>: <span class="kw-2">&</span><span class="kw-2">mut</span> <span class="ident">dev</span>::<span class="ident">ServiceRequest</span>) <span class="op">-</span><span class="op">></span> <span class="self">Self</span>::<span class="ident">Future</span> {
|
||||
<span class="kw">fn</span> <span class="ident">from_request</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="kw">_</span>: <span class="kw-2">&</span><span class="kw-2">mut</span> <span class="ident">dev::ServiceRequest</span>) <span class="op">-</span><span class="op">></span> <span class="self">Self</span><span class="ident">::Future</span> {
|
||||
<span class="ident">ok</span>(<span class="prelude-val">Some</span>(<span class="string">"test"</span>.<span class="ident">to_string</span>()))
|
||||
}
|
||||
|
||||
@@ -312,28 +312,28 @@
|
||||
<span class="kw-2">&</span><span class="self">self</span>,
|
||||
<span class="kw">_</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>,
|
||||
<span class="kw">_</span>: <span class="ident">bool</span>,
|
||||
<span class="kw">_</span>: <span class="kw-2">&</span><span class="kw-2">mut</span> <span class="ident">dev</span>::<span class="ident">ServiceResponse</span><span class="op"><</span><span class="ident">B</span><span class="op">></span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="self">Self</span>::<span class="ident">ResponseFuture</span> {
|
||||
<span class="kw">_</span>: <span class="kw-2">&</span><span class="kw-2">mut</span> <span class="ident">dev::ServiceResponse</span><span class="op"><</span><span class="ident">B</span><span class="op">></span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="self">Self</span><span class="ident">::ResponseFuture</span> {
|
||||
<span class="ident">ok</span>(())
|
||||
}
|
||||
}
|
||||
|
||||
<span class="kw">let</span> <span class="ident">srv</span> <span class="op">=</span> <span class="kw">crate</span>::<span class="ident">middleware</span>::<span class="ident">IdentityServiceMiddleware</span> {
|
||||
<span class="ident">backend</span>: <span class="ident">Rc</span>::<span class="ident">new</span>(<span class="ident">Ident</span>),
|
||||
<span class="ident">service</span>: <span class="ident">Rc</span>::<span class="ident">new</span>(<span class="ident">into_service</span>(<span class="op">|</span><span class="kw">_</span>: <span class="ident">dev</span>::<span class="ident">ServiceRequest</span><span class="op">|</span> <span class="kw">async</span> <span class="kw">move</span> {
|
||||
<span class="ident">actix_rt</span>::<span class="ident">time</span>::<span class="ident">sleep</span>(<span class="ident">Duration</span>::<span class="ident">from_secs</span>(<span class="number">100</span>)).<span class="kw">await</span>;
|
||||
<span class="prelude-val">Err</span>::<span class="op"><</span><span class="ident">dev</span>::<span class="ident">ServiceResponse</span>, <span class="kw">_</span><span class="op">></span>(<span class="ident">error</span>::<span class="ident">ErrorBadRequest</span>(<span class="string">"error"</span>))
|
||||
<span class="kw">let</span> <span class="ident">srv</span> <span class="op">=</span> <span class="kw">crate</span><span class="ident">::middleware::IdentityServiceMiddleware</span> {
|
||||
<span class="ident">backend</span>: <span class="ident">Rc::new</span>(<span class="ident">Ident</span>),
|
||||
<span class="ident">service</span>: <span class="ident">Rc::new</span>(<span class="ident">into_service</span>(<span class="op">|</span><span class="kw">_</span>: <span class="ident">dev::ServiceRequest</span><span class="op">|</span> <span class="kw">async</span> <span class="kw">move</span> {
|
||||
<span class="ident">actix_rt::time::sleep</span>(<span class="ident">Duration::from_secs</span>(<span class="number">100</span>)).<span class="kw">await</span>;
|
||||
<span class="prelude-val">Err</span>::<span class="op"><</span><span class="ident">dev::ServiceResponse</span>, <span class="kw">_</span><span class="op">></span>(<span class="ident">error::ErrorBadRequest</span>(<span class="string">"error"</span>))
|
||||
})),
|
||||
};
|
||||
|
||||
<span class="kw">let</span> <span class="ident">srv2</span> <span class="op">=</span> <span class="ident">srv</span>.<span class="ident">clone</span>();
|
||||
<span class="kw">let</span> <span class="ident">req</span> <span class="op">=</span> <span class="ident">test</span>::<span class="ident">TestRequest</span>::<span class="ident">default</span>().<span class="ident">to_srv_request</span>();
|
||||
<span class="kw">let</span> <span class="ident">req</span> <span class="op">=</span> <span class="ident">test::TestRequest::default</span>().<span class="ident">to_srv_request</span>();
|
||||
|
||||
<span class="ident">actix_rt</span>::<span class="ident">spawn</span>(<span class="kw">async</span> <span class="kw">move</span> {
|
||||
<span class="ident">actix_rt::spawn</span>(<span class="kw">async</span> <span class="kw">move</span> {
|
||||
<span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="ident">srv2</span>.<span class="ident">call</span>(<span class="ident">req</span>).<span class="kw">await</span>;
|
||||
});
|
||||
|
||||
<span class="ident">actix_rt</span>::<span class="ident">time</span>::<span class="ident">sleep</span>(<span class="ident">Duration</span>::<span class="ident">from_millis</span>(<span class="number">50</span>)).<span class="kw">await</span>;
|
||||
<span class="ident">actix_rt::time::sleep</span>(<span class="ident">Duration::from_millis</span>(<span class="number">50</span>)).<span class="kw">await</span>;
|
||||
|
||||
<span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="ident">lazy</span>(<span class="op">|</span><span class="ident">cx</span><span class="op">|</span> <span class="ident">srv</span>.<span class="ident">poll_ready</span>(<span class="ident">cx</span>)).<span class="kw">await</span>;
|
||||
}
|
||||
|
Reference in New Issue
Block a user