Deploying to gh-pages from @ 1e25b66e42 🚀

This commit is contained in:
realaravinth
2021-03-27 09:57:21 +00:00
parent 8b1f6193b4
commit 62727d12d8
8 changed files with 76 additions and 18 deletions

View File

@@ -269,6 +269,32 @@
<span id="266">266</span>
<span id="267">267</span>
<span id="268">268</span>
<span id="269">269</span>
<span id="270">270</span>
<span id="271">271</span>
<span id="272">272</span>
<span id="273">273</span>
<span id="274">274</span>
<span id="275">275</span>
<span id="276">276</span>
<span id="277">277</span>
<span id="278">278</span>
<span id="279">279</span>
<span id="280">280</span>
<span id="281">281</span>
<span id="282">282</span>
<span id="283">283</span>
<span id="284">284</span>
<span id="285">285</span>
<span id="286">286</span>
<span id="287">287</span>
<span id="288">288</span>
<span id="289">289</span>
<span id="290">290</span>
<span id="291">291</span>
<span id="292">292</span>
<span id="293">293</span>
<span id="294">294</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="comment">/*
* Copyright (C) 2021 Aravinth Manivannan &lt;realaravinth@batsense.net&gt;
@@ -350,20 +376,28 @@
<span class="ident">data</span>: <span class="ident">web</span>::<span class="ident">Data</span><span class="op">&lt;</span><span class="ident">Data</span><span class="op">&gt;</span>,
<span class="ident">id</span>: <span class="ident">Identity</span>,
) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">&gt;</span> {
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">borrow</span>::<span class="ident">Cow</span>;
<span class="ident">is_authenticated</span>(<span class="kw-2">&amp;</span><span class="ident">id</span>)<span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">get_random</span>(<span class="number">32</span>);
<span class="kw">let</span> <span class="ident">url</span> <span class="op">=</span> <span class="ident">Url</span>::<span class="ident">parse</span>(<span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">domain</span>)<span class="question-mark">?</span>;
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">key</span>;
<span class="kw">let</span> <span class="ident">host</span> <span class="op">=</span> <span class="ident">url</span>.<span class="ident">host_str</span>().<span class="ident">ok_or</span>(<span class="ident">ServiceError</span>::<span class="ident">NotAUrl</span>)<span class="question-mark">?</span>;
<span class="ident">sqlx</span>::<span class="macro">query</span><span class="macro">!</span>(
<span class="string">&quot;UPDATE mcaptcha_config SET key = $1
WHERE name = $2 AND domain_name = $3&quot;</span>,
<span class="kw-2">&amp;</span><span class="ident">key</span>,
<span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">name</span>,
<span class="kw-2">&amp;</span><span class="ident">host</span>,
)
.<span class="ident">execute</span>(<span class="kw-2">&amp;</span><span class="ident">data</span>.<span class="ident">db</span>)
.<span class="kw">await</span><span class="question-mark">?</span>;
<span class="kw">loop</span> {
<span class="ident">key</span> <span class="op">=</span> <span class="ident">get_random</span>(<span class="number">32</span>);
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">update_token_helper</span>(<span class="kw-2">&amp;</span><span class="ident">key</span>, <span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">name</span>, <span class="kw-2">&amp;</span><span class="ident">host</span>, <span class="kw-2">&amp;</span><span class="ident">data</span>).<span class="kw">await</span>;
<span class="kw">if</span> <span class="ident">res</span>.<span class="ident">is_ok</span>() {
<span class="kw">break</span>;
} <span class="kw">else</span> {
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Err</span>(<span class="ident">sqlx</span>::<span class="ident">Error</span>::<span class="ident">Database</span>(<span class="ident">err</span>)) <span class="op">=</span> <span class="ident">res</span> {
<span class="kw">if</span> <span class="ident">err</span>.<span class="ident">code</span>() <span class="op">=</span><span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">Cow</span>::<span class="ident">from</span>(<span class="string">&quot;23505&quot;</span>)) {
<span class="kw">continue</span>;
} <span class="kw">else</span> {
<span class="prelude-val">Err</span>(<span class="ident">sqlx</span>::<span class="ident">Error</span>::<span class="ident">Database</span>(<span class="ident">err</span>))<span class="question-mark">?</span>;
}
};
}
}
<span class="kw">let</span> <span class="ident">resp</span> <span class="op">=</span> <span class="ident">MCaptchaDetails</span> {
<span class="ident">key</span>,
@@ -373,6 +407,24 @@
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse</span>::<span class="prelude-val">Ok</span>().<span class="ident">json</span>(<span class="ident">resp</span>))
}
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">update_token_helper</span>(
<span class="ident">key</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>,
<span class="ident">name</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>,
<span class="ident">host</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>,
<span class="ident">data</span>: <span class="kw-2">&amp;</span><span class="ident">Data</span>,
) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Result</span><span class="op">&lt;</span>(), <span class="ident">sqlx</span>::<span class="ident">Error</span><span class="op">&gt;</span> {
<span class="ident">sqlx</span>::<span class="macro">query</span><span class="macro">!</span>(
<span class="string">&quot;UPDATE mcaptcha_config SET key = $1
WHERE name = $2 AND domain_name = $3&quot;</span>,
<span class="kw-2">&amp;</span><span class="ident">key</span>,
<span class="kw-2">&amp;</span><span class="ident">name</span>,
<span class="kw-2">&amp;</span><span class="ident">host</span>,
)
.<span class="ident">execute</span>(<span class="kw-2">&amp;</span><span class="ident">data</span>.<span class="ident">db</span>)
.<span class="kw">await</span><span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
<span class="attribute">#[<span class="ident">post</span>(<span class="string">&quot;/api/v1/mcaptcha/domain/token/get&quot;</span>)]</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">get_token</span>(
<span class="ident">payload</span>: <span class="ident">web</span>::<span class="ident">Json</span><span class="op">&lt;</span><span class="ident">MCaptchaID</span><span class="op">&gt;</span>,