Deploying to gh-pages from @ 2b10aa5d40 🚀

This commit is contained in:
realaravinth
2021-12-02 15:12:27 +00:00
parent 2a8f18a15a
commit 972b1e80cc
411 changed files with 3563 additions and 3491 deletions

View File

@@ -106,7 +106,7 @@
<span class="ident">id</span>: <span class="ident">Identity</span>,
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">Password</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">argon2_creds::Config</span>;
<span class="kw">use</span> <span class="ident">sqlx::Error::RowNotFound</span>;
@@ -121,7 +121,7 @@
.<span class="kw">await</span>;
<span class="kw">match</span> <span class="ident">rec</span> {
<span class="prelude-val">Ok</span>(<span class="ident">s</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="prelude-val">Ok</span>(<span class="ident">s</span>) =&gt; {
<span class="kw">if</span> <span class="ident">Config::verify</span>(<span class="kw-2">&amp;</span><span class="ident">s</span>.<span class="ident">password</span>, <span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">password</span>)<span class="question-mark">?</span> {
<span class="ident">runners::delete_user</span>(<span class="kw-2">&amp;</span><span class="ident">username</span>, <span class="kw-2">&amp;</span><span class="ident">data</span>).<span class="kw">await</span><span class="question-mark">?</span>;
<span class="ident">id</span>.<span class="ident">forget</span>();
@@ -130,8 +130,8 @@
<span class="prelude-val">Err</span>(<span class="ident">ServiceError::WrongPassword</span>)
}
}
<span class="prelude-val">Err</span>(<span class="ident">RowNotFound</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::AccountNotFound</span>),
<span class="prelude-val">Err</span>(<span class="kw">_</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::InternalServerError</span>),
<span class="prelude-val">Err</span>(<span class="ident">RowNotFound</span>) =&gt; <span class="prelude-val">Err</span>(<span class="ident">ServiceError::AccountNotFound</span>),
<span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="prelude-val">Err</span>(<span class="ident">ServiceError::InternalServerError</span>),
}
}
@@ -139,7 +139,7 @@
<span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">delete_user</span>(<span class="ident">name</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">AppData</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">delete_user</span>(<span class="ident">name</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">AppData</span>) -&gt; <span class="ident">ServiceResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="macro">sqlx::query!</span>(<span class="string">&quot;DELETE FROM mcaptcha_users WHERE name = ($1)&quot;</span>, <span class="ident">name</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>;

View File

@@ -127,7 +127,7 @@
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">email_exists</span>(
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">AccountCheckPayload</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="macro">sqlx::query!</span>(
<span class="string">&quot;SELECT EXISTS (SELECT 1 from mcaptcha_users WHERE email = $1)&quot;</span>,
<span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">val</span>,
@@ -155,7 +155,7 @@
<span class="ident">id</span>: <span class="ident">Identity</span>,
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">Email</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="ident">data</span>.<span class="ident">creds</span>.<span class="ident">email</span>(<span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">email</span>)<span class="question-mark">?</span>;
@@ -170,7 +170,7 @@
.<span class="kw">await</span>;
<span class="kw">if</span> <span class="ident">res</span>.<span class="ident">is_err</span>() {
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Err</span>(<span class="ident">sqlx::Error::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::from</span>(<span class="string">&quot;23505&quot;</span>))
<span class="kw">if</span> <span class="ident">err</span>.<span class="ident">code</span>() <span class="op">==</span> <span class="prelude-val">Some</span>(<span class="ident">Cow::from</span>(<span class="string">&quot;23505&quot;</span>))
<span class="op">&amp;&amp;</span> <span class="ident">err</span>.<span class="ident">message</span>().<span class="ident">contains</span>(<span class="string">&quot;mcaptcha_users_email_key&quot;</span>)
{
<span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::EmailTaken</span>);

View File

@@ -126,7 +126,7 @@
}
<span class="kw">impl</span> <span class="ident">Account</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Account</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="ident">Account</span> {
<span class="kw">let</span> <span class="ident">get_secret</span> <span class="op">=</span> <span class="string">&quot;/api/v1/account/secret/get&quot;</span>;
<span class="kw">let</span> <span class="ident">update_secret</span> <span class="op">=</span> <span class="string">&quot;/api/v1/account/secret/update&quot;</span>;
<span class="kw">let</span> <span class="ident">delete</span> <span class="op">=</span> <span class="string">&quot;/api/v1/account/delete&quot;</span>;

View File

@@ -243,7 +243,7 @@
}
<span class="kw">impl</span> <span class="ident">From</span><span class="op">&lt;</span><span class="ident">ChangePasswordReqest</span><span class="op">&gt;</span> <span class="kw">for</span> <span class="ident">UpdatePassword</span> {
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">s</span>: <span class="ident">ChangePasswordReqest</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">s</span>: <span class="ident">ChangePasswordReqest</span>) -&gt; <span class="self">Self</span> {
<span class="ident">UpdatePassword</span> {
<span class="ident">new_password</span>: <span class="ident">s</span>.<span class="ident">new_password</span>,
<span class="ident">confirm_new_password</span>: <span class="ident">s</span>.<span class="ident">confirm_new_password</span>,
@@ -255,7 +255,7 @@
<span class="ident">user</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>,
<span class="ident">update</span>: <span class="ident">UpdatePassword</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="ident">ServiceResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
) -&gt; <span class="ident">ServiceResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="kw">if</span> <span class="ident">update</span>.<span class="ident">new_password</span> <span class="op">!</span><span class="op">=</span> <span class="ident">update</span>.<span class="ident">confirm_new_password</span> {
<span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::PasswordsDontMatch</span>);
}
@@ -282,7 +282,7 @@
<span class="ident">id</span>: <span class="ident">Identity</span>,
<span class="ident">data</span>: <span class="ident">AppData</span>,
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">ChangePasswordReqest</span><span class="op">&gt;</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> {
) -&gt; <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">if</span> <span class="ident">payload</span>.<span class="ident">new_password</span> <span class="op">!</span><span class="op">=</span> <span class="ident">payload</span>.<span class="ident">confirm_new_password</span> {
<span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::PasswordsDontMatch</span>);
}
@@ -298,7 +298,7 @@
.<span class="kw">await</span>;
<span class="kw">match</span> <span class="ident">rec</span> {
<span class="prelude-val">Ok</span>(<span class="ident">s</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="prelude-val">Ok</span>(<span class="ident">s</span>) =&gt; {
<span class="kw">if</span> <span class="ident">Config::verify</span>(<span class="kw-2">&amp;</span><span class="ident">s</span>.<span class="ident">password</span>, <span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">password</span>)<span class="question-mark">?</span> {
<span class="kw">let</span> <span class="ident">update</span>: <span class="ident">UpdatePassword</span> <span class="op">=</span> <span class="ident">payload</span>.<span class="ident">into_inner</span>().<span class="ident">into</span>();
<span class="ident">update_password_runner</span>(<span class="kw-2">&amp;</span><span class="ident">username</span>, <span class="ident">update</span>, <span class="kw-2">&amp;</span><span class="ident">data</span>).<span class="kw">await</span><span class="question-mark">?</span>;
@@ -307,8 +307,8 @@
<span class="prelude-val">Err</span>(<span class="ident">ServiceError::WrongPassword</span>)
}
}
<span class="prelude-val">Err</span>(<span class="ident">RowNotFound</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::AccountNotFound</span>),
<span class="prelude-val">Err</span>(<span class="kw">_</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::InternalServerError</span>),
<span class="prelude-val">Err</span>(<span class="ident">RowNotFound</span>) =&gt; <span class="prelude-val">Err</span>(<span class="ident">ServiceError::AccountNotFound</span>),
<span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="prelude-val">Err</span>(<span class="ident">ServiceError::InternalServerError</span>),
}
}

View File

@@ -123,7 +123,7 @@
<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;crate::V1_API_ROUTES.account.get_secret&quot;</span>,
<span class="ident">wrap</span> <span class="op">=</span> <span class="string">&quot;crate::CheckLogin&quot;</span>
)]</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">get_secret</span>(<span class="ident">id</span>: <span class="ident">Identity</span>, <span class="ident">data</span>: <span class="ident">AppData</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">async</span> <span class="kw">fn</span> <span class="ident">get_secret</span>(<span class="ident">id</span>: <span class="ident">Identity</span>, <span class="ident">data</span>: <span class="ident">AppData</span>) -&gt; <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">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">secret</span> <span class="op">=</span> <span class="macro">sqlx::query_as!</span>(
@@ -144,7 +144,7 @@
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">update_user_secret</span>(
<span class="ident">id</span>: <span class="ident">Identity</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">secret</span>;
@@ -162,7 +162,7 @@
<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::Error::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::from</span>(<span class="string">&quot;23505&quot;</span>))
<span class="kw">if</span> <span class="ident">err</span>.<span class="ident">code</span>() <span class="op">==</span> <span class="prelude-val">Some</span>(<span class="ident">Cow::from</span>(<span class="string">&quot;23505&quot;</span>))
<span class="op">&amp;&amp;</span> <span class="ident">err</span>.<span class="ident">message</span>().<span class="ident">contains</span>(<span class="string">&quot;mcaptcha_users_secret_key&quot;</span>)
{
<span class="kw">continue</span>;

View File

@@ -138,7 +138,7 @@
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">username_exists</span>(
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">AccountCheckPayload</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">let</span> <span class="ident">resp</span> <span class="op">=</span> <span class="ident">runners::username_exists</span>(<span class="kw-2">&amp;</span><span class="ident">payload</span>, <span class="kw-2">&amp;</span><span class="ident">data</span>).<span class="kw">await</span><span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse::Ok</span>().<span class="ident">json</span>(<span class="ident">resp</span>))
}
@@ -149,7 +149,7 @@
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">username_exists</span>(
<span class="ident">payload</span>: <span class="kw-2">&amp;</span><span class="ident">AccountCheckPayload</span>,
<span class="ident">data</span>: <span class="kw-2">&amp;</span><span class="ident">AppData</span>,
) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="ident">AccountCheckResp</span><span class="op">&gt;</span> {
) -&gt; <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="ident">AccountCheckResp</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="macro">sqlx::query!</span>(
<span class="string">&quot;SELECT EXISTS (SELECT 1 from mcaptcha_users WHERE name = $1)&quot;</span>,
<span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">val</span>,
@@ -183,7 +183,7 @@
<span class="ident">id</span>: <span class="ident">Identity</span>,
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">Username</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">processed_uname</span> <span class="op">=</span> <span class="ident">data</span>.<span class="ident">creds</span>.<span class="ident">username</span>(<span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">username</span>)<span class="question-mark">?</span>;
@@ -199,7 +199,7 @@
<span class="kw">if</span> <span class="ident">res</span>.<span class="ident">is_err</span>() {
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Err</span>(<span class="ident">sqlx::Error::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::from</span>(<span class="string">&quot;23505&quot;</span>))
<span class="kw">if</span> <span class="ident">err</span>.<span class="ident">code</span>() <span class="op">==</span> <span class="prelude-val">Some</span>(<span class="ident">Cow::from</span>(<span class="string">&quot;23505&quot;</span>))
<span class="op">&amp;&amp;</span> <span class="ident">err</span>.<span class="ident">message</span>().<span class="ident">contains</span>(<span class="string">&quot;mcaptcha_users_name_key&quot;</span>)
{
<span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::UsernameTaken</span>);

View File

@@ -264,7 +264,7 @@
}
<span class="kw">impl</span> <span class="ident">Auth</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Auth</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="ident">Auth</span> {
<span class="kw">let</span> <span class="ident">login</span> <span class="op">=</span> <span class="string">&quot;/api/v1/signin&quot;</span>;
<span class="kw">let</span> <span class="ident">logout</span> <span class="op">=</span> <span class="string">&quot;/logout&quot;</span>;
<span class="kw">let</span> <span class="ident">register</span> <span class="op">=</span> <span class="string">&quot;/api/v1/signup&quot;</span>;
@@ -304,7 +304,7 @@
}
<span class="doccomment">/// returns Ok(()) when everything checks out and the user is authenticated. Erros otherwise</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">login_runner</span>(<span class="ident">payload</span>: <span class="ident">Login</span>, <span class="ident">data</span>: <span class="kw-2">&amp;</span><span class="ident">AppData</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="ident">String</span><span class="op">&gt;</span> {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">login_runner</span>(<span class="ident">payload</span>: <span class="ident">Login</span>, <span class="ident">data</span>: <span class="kw-2">&amp;</span><span class="ident">AppData</span>) -&gt; <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="ident">String</span><span class="op">&gt;</span> {
<span class="kw">use</span> <span class="ident">argon2_creds::Config</span>;
<span class="kw">use</span> <span class="ident">sqlx::Error::RowNotFound</span>;
@@ -332,13 +332,13 @@
.<span class="kw">await</span>;
<span class="kw">match</span> <span class="ident">email_fut</span> {
<span class="prelude-val">Ok</span>(<span class="ident">s</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="prelude-val">Ok</span>(<span class="ident">s</span>) =&gt; {
<span class="ident">verify</span>(<span class="kw-2">&amp;</span><span class="ident">s</span>.<span class="ident">password</span>, <span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">password</span>)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(<span class="ident">s</span>.<span class="ident">name</span>)
}
<span class="prelude-val">Err</span>(<span class="ident">RowNotFound</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::AccountNotFound</span>),
<span class="prelude-val">Err</span>(<span class="kw">_</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::InternalServerError</span>),
<span class="prelude-val">Err</span>(<span class="ident">RowNotFound</span>) =&gt; <span class="prelude-val">Err</span>(<span class="ident">ServiceError::AccountNotFound</span>),
<span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="prelude-val">Err</span>(<span class="ident">ServiceError::InternalServerError</span>),
}
} <span class="kw">else</span> {
<span class="kw">let</span> <span class="ident">username_fut</span> <span class="op">=</span> <span class="macro">sqlx::query_as!</span>(
@@ -350,12 +350,12 @@
.<span class="kw">await</span>;
<span class="kw">match</span> <span class="ident">username_fut</span> {
<span class="prelude-val">Ok</span>(<span class="ident">s</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="prelude-val">Ok</span>(<span class="ident">s</span>) =&gt; {
<span class="ident">verify</span>(<span class="kw-2">&amp;</span><span class="ident">s</span>.<span class="ident">password</span>, <span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">password</span>)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(<span class="ident">payload</span>.<span class="ident">login</span>)
}
<span class="prelude-val">Err</span>(<span class="ident">RowNotFound</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::AccountNotFound</span>),
<span class="prelude-val">Err</span>(<span class="kw">_</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::InternalServerError</span>),
<span class="prelude-val">Err</span>(<span class="ident">RowNotFound</span>) =&gt; <span class="prelude-val">Err</span>(<span class="ident">ServiceError::AccountNotFound</span>),
<span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="prelude-val">Err</span>(<span class="ident">ServiceError::InternalServerError</span>),
}
}
}
@@ -363,7 +363,7 @@
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">register_runner</span>(
<span class="ident">payload</span>: <span class="kw-2">&amp;</span><span class="ident">Register</span>,
<span class="ident">data</span>: <span class="kw-2">&amp;</span><span class="ident">AppData</span>,
) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
) -&gt; <span class="ident">ServiceResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="kw">if</span> <span class="op">!</span><span class="ident"><span class="kw">crate</span>::SETTINGS</span>.<span class="ident">allow_registration</span> {
<span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::ClosedForRegistration</span>);
}
@@ -408,7 +408,7 @@
<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::Error::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::from</span>(<span class="string">&quot;23505&quot;</span>)) {
<span class="kw">if</span> <span class="ident">err</span>.<span class="ident">code</span>() <span class="op">==</span> <span class="prelude-val">Some</span>(<span class="ident">Cow::from</span>(<span class="string">&quot;23505&quot;</span>)) {
<span class="kw">let</span> <span class="ident">msg</span> <span class="op">=</span> <span class="ident">err</span>.<span class="ident">message</span>();
<span class="kw">if</span> <span class="ident">msg</span>.<span class="ident">contains</span>(<span class="string">&quot;mcaptcha_users_name_key&quot;</span>) {
<span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::UsernameTaken</span>);
@@ -437,7 +437,7 @@
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">register</span>(
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">runners::Register</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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="ident">runners::register_runner</span>(<span class="kw-2">&amp;</span><span class="ident">payload</span>, <span class="kw-2">&amp;</span><span class="ident">data</span>).<span class="kw">await</span><span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse::Ok</span>())
}
@@ -447,14 +447,14 @@
<span class="ident">id</span>: <span class="ident">Identity</span>,
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">runners::Login</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">runners::login_runner</span>(<span class="ident">payload</span>.<span class="ident">into_inner</span>(), <span class="kw-2">&amp;</span><span class="ident">data</span>).<span class="kw">await</span><span class="question-mark">?</span>;
<span class="ident">id</span>.<span class="ident">remember</span>(<span class="ident">username</span>);
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse::Ok</span>())
}
<span class="attribute">#[<span class="ident">my_codegen::get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;crate::V1_API_ROUTES.auth.logout&quot;</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">&quot;crate::CheckLogin&quot;</span>)]</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">signout</span>(<span class="ident">id</span>: <span class="ident">Identity</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">signout</span>(<span class="ident">id</span>: <span class="ident">Identity</span>) -&gt; <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">if</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">is_some</span>() {
<span class="ident">id</span>.<span class="ident">forget</span>();
}

View File

@@ -373,7 +373,7 @@
}
<span class="kw">impl</span> <span class="ident">MCaptcha</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">MCaptcha</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="ident">MCaptcha</span> {
<span class="ident">MCaptcha</span> {
<span class="ident">update_key</span>: <span class="string">&quot;/api/v1/mcaptcha/update/key&quot;</span>,
<span class="ident">delete</span>: <span class="string">&quot;/api/v1/mcaptcha/delete&quot;</span>,
@@ -407,7 +407,7 @@
<span class="ident">description</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">AppData</span>,
<span class="ident">id</span>: <span class="kw-2">&amp;</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="ident">MCaptchaDetails</span><span class="op">&gt;</span> {
) -&gt; <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="ident">MCaptchaDetails</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">key</span>;
@@ -429,8 +429,8 @@
.<span class="kw">await</span>;
<span class="kw">match</span> <span class="ident">res</span> {
<span class="prelude-val">Err</span>(<span class="ident">sqlx::Error::Database</span>(<span class="ident">err</span>)) <span class="op">=</span><span class="op">&gt;</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::from</span>(<span class="string">&quot;23505&quot;</span>))
<span class="prelude-val">Err</span>(<span class="ident">sqlx::Error::Database</span>(<span class="ident">err</span>)) =&gt; {
<span class="kw">if</span> <span class="ident">err</span>.<span class="ident">code</span>() <span class="op">==</span> <span class="prelude-val">Some</span>(<span class="ident">Cow::from</span>(<span class="string">&quot;23505&quot;</span>))
<span class="op">&amp;&amp;</span> <span class="ident">err</span>.<span class="ident">message</span>().<span class="ident">contains</span>(<span class="string">&quot;mcaptcha_config_key_key&quot;</span>)
{
<span class="kw">continue</span>;
@@ -438,9 +438,9 @@
<span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">sqlx::Error::Database</span>(<span class="ident">err</span>).<span class="ident">into</span>());
}
}
<span class="prelude-val">Err</span>(<span class="ident">e</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">e</span>.<span class="ident">into</span>()),
<span class="prelude-val">Err</span>(<span class="ident">e</span>) =&gt; <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">e</span>.<span class="ident">into</span>()),
<span class="prelude-val">Ok</span>(<span class="kw">_</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; {
<span class="ident">resp</span> <span class="op">=</span> <span class="ident">MCaptchaDetails</span> {
<span class="ident">key</span>,
<span class="ident">name</span>: <span class="ident">description</span>.<span class="ident">to_owned</span>(),
@@ -460,7 +460,7 @@
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">MCaptchaDetails</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">key</span>;
@@ -470,7 +470,7 @@
<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::Error::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::from</span>(<span class="string">&quot;23505&quot;</span>)) {
<span class="kw">if</span> <span class="ident">err</span>.<span class="ident">code</span>() <span class="op">==</span> <span class="prelude-val">Some</span>(<span class="ident">Cow::from</span>(<span class="string">&quot;23505&quot;</span>)) {
<span class="kw">continue</span>;
} <span class="kw">else</span> {
<span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">sqlx::Error::Database</span>(<span class="ident">err</span>).<span class="ident">into</span>());
@@ -499,7 +499,7 @@
<span class="ident">old_key</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>,
<span class="ident">username</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">AppData</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::Error</span><span class="op">&gt;</span> {
) -&gt; <span class="prelude-ty">Result</span><span class="op">&lt;</span>(), <span class="ident">sqlx::Error</span><span class="op">&gt;</span> {
<span class="macro">sqlx::query!</span>(
<span class="string">&quot;UPDATE mcaptcha_config SET key = $1
WHERE key = $2 AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = $3)&quot;</span>,
@@ -526,7 +526,7 @@
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">DeleteCaptcha</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">argon2_creds::Config</span>;
<span class="kw">use</span> <span class="ident">sqlx::Error::RowNotFound</span>;
@@ -546,7 +546,7 @@
.<span class="kw">await</span>;
<span class="kw">match</span> <span class="ident">rec</span> {
<span class="prelude-val">Ok</span>(<span class="ident">rec</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="prelude-val">Ok</span>(<span class="ident">rec</span>) =&gt; {
<span class="kw">if</span> <span class="ident">Config::verify</span>(<span class="kw-2">&amp;</span><span class="ident">rec</span>.<span class="ident">password</span>, <span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">password</span>)<span class="question-mark">?</span> {
<span class="kw">let</span> <span class="ident">payload</span> <span class="op">=</span> <span class="ident">payload</span>.<span class="ident">into_inner</span>();
<span class="macro">sqlx::query!</span>(
@@ -579,8 +579,8 @@
<span class="prelude-val">Err</span>(<span class="ident">ServiceError::WrongPassword</span>)
}
}
<span class="prelude-val">Err</span>(<span class="ident">RowNotFound</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::UsernameNotFound</span>),
<span class="prelude-val">Err</span>(<span class="kw">_</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::InternalServerError</span>),
<span class="prelude-val">Err</span>(<span class="ident">RowNotFound</span>) =&gt; <span class="prelude-val">Err</span>(<span class="ident">ServiceError::UsernameNotFound</span>),
<span class="prelude-val">Err</span>(<span class="kw">_</span>) =&gt; <span class="prelude-val">Err</span>(<span class="ident">ServiceError::InternalServerError</span>),
}
}
@@ -597,7 +597,7 @@
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">StatsPayload</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">stats</span> <span class="op">=</span> <span class="ident">Stats::new</span>(<span class="kw-2">&amp;</span><span class="ident">username</span>, <span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">key</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">let</span> <span class="ident">stats</span> <span class="op">=</span> <span class="ident">StatsUnixTimestamp::from_stats</span>(<span class="kw-2">&amp;</span><span class="ident">stats</span>);

View File

@@ -208,7 +208,7 @@
<span class="kw">pub</span> <span class="ident">get</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;static</span> <span class="ident">str</span>,
}
<span class="kw">impl</span> <span class="ident">Duration</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Duration</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="ident">Duration</span> {
<span class="ident">Duration</span> {
<span class="ident">update</span>: <span class="string">&quot;/api/v1/mcaptcha/domain/token/duration/update&quot;</span>,
<span class="ident">get</span>: <span class="string">&quot;/api/v1/mcaptcha/domain/token/duration/get&quot;</span>,
@@ -231,7 +231,7 @@
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">UpdateDuration</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="kw">if</span> <span class="ident">payload</span>.<span class="ident">duration</span> <span class="op">&gt;</span> <span class="number">0</span> {
@@ -272,7 +272,7 @@
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">MCaptchaDetails</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">duration</span> <span class="op">=</span> <span class="macro">sqlx::query_as!</span>(

View File

@@ -393,7 +393,7 @@
}
<span class="kw">impl</span> <span class="ident">Levels</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Levels</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="ident">Levels</span> {
<span class="kw">let</span> <span class="ident">add</span> <span class="op">=</span> <span class="string">&quot;/api/v1/mcaptcha/add&quot;</span>;
<span class="kw">let</span> <span class="ident">update</span> <span class="op">=</span> <span class="string">&quot;/api/v1/mcaptcha/update&quot;</span>;
<span class="kw">let</span> <span class="ident">get</span> <span class="op">=</span> <span class="string">&quot;/api/v1/mcaptcha/get&quot;</span>;
@@ -422,7 +422,7 @@
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">AddLevels</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">let</span> <span class="kw-2">mut</span> <span class="ident">defense</span> <span class="op">=</span> <span class="ident">DefenseBuilder::default</span>();
<span class="kw">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
@@ -483,7 +483,7 @@
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">UpdateLevels</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">defense</span> <span class="op">=</span> <span class="ident">DefenseBuilder::default</span>();
@@ -567,7 +567,7 @@
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">MCaptchaDetails</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">levels</span> <span class="op">=</span> <span class="ident">get_levels_util</span>(<span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">key</span>, <span class="kw-2">&amp;</span><span class="ident">username</span>, <span class="kw-2">&amp;</span><span class="ident">data</span>).<span class="kw">await</span><span class="question-mark">?</span>;
@@ -590,7 +590,7 @@
<span class="ident">key</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>,
<span class="ident">username</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">AppData</span>,
) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">I32Levels</span><span class="op">&gt;</span><span class="op">&gt;</span> {
) -&gt; <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">I32Levels</span><span class="op">&gt;</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">levels</span> <span class="op">=</span> <span class="macro">sqlx::query_as!</span>(
<span class="ident">I32Levels</span>,
<span class="string">&quot;SELECT difficulty_factor, visitor_threshold FROM mcaptcha_levels WHERE

View File

@@ -59,7 +59,7 @@
<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">duration</span>;
<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">levels</span>;
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_random</span>(<span class="ident">len</span>: <span class="ident">usize</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">String</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_random</span>(<span class="ident">len</span>: <span class="ident">usize</span>) -&gt; <span class="ident">String</span> {
<span class="kw">use</span> <span class="ident">std::iter</span>;
<span class="kw">use</span> <span class="ident">rand</span>::{<span class="ident">distributions::Alphanumeric</span>, <span class="ident">rngs::ThreadRng</span>, <span class="ident">thread_rng</span>, <span class="ident">Rng</span>};

View File

@@ -187,7 +187,7 @@
}
<span class="kw">impl</span> <span class="ident">Meta</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="self">Self</span> {
<span class="self">Self</span> {
<span class="ident">build_details</span>: <span class="string">&quot;/api/v1/meta/build&quot;</span>,
<span class="ident">health</span>: <span class="string">&quot;/api/v1/meta/health&quot;</span>,
@@ -198,7 +198,7 @@
<span class="doccomment">/// emmits build details of the bninary</span>
<span class="attribute">#[<span class="ident">my_codegen::get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;crate::V1_API_ROUTES.meta.build_details&quot;</span>)]</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">build_details</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">build_details</span>() -&gt; <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">let</span> <span class="ident">build</span> <span class="op">=</span> <span class="ident">BuildDetails</span> {
<span class="ident">version</span>: <span class="ident">VERSION</span>,
<span class="ident">git_commit_hash</span>: <span class="ident">GIT_COMMIT_HASH</span>,
@@ -215,14 +215,14 @@
}
<span class="kw">impl</span> <span class="ident">Health</span> {
<span class="kw">fn</span> <span class="ident">is_redis</span>(<span class="ident">redis</span>: <span class="kw-2">&amp;</span><span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">bool</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">bool</span> {
<span class="kw">fn</span> <span class="ident">is_redis</span>(<span class="ident">redis</span>: <span class="kw-2">&amp;</span><span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">bool</span><span class="op">&gt;</span>) -&gt; <span class="ident">bool</span> {
<span class="ident">redis</span>.<span class="ident">is_none</span>()
}
}
<span class="doccomment">/// checks all components of the system</span>
<span class="attribute">#[<span class="ident">my_codegen::get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;crate::V1_API_ROUTES.meta.health&quot;</span>)]</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">health</span>(<span class="ident">data</span>: <span class="ident">AppData</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">health</span>(<span class="ident">data</span>: <span class="ident">AppData</span>) -&gt; <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">use</span> <span class="ident">sqlx::Connection</span>;
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">resp_builder</span> <span class="op">=</span> <span class="ident">HealthBuilder::default</span>();

View File

@@ -144,7 +144,7 @@
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">AddNotification</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">let</span> <span class="ident">sender</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="comment">// TODO handle error where payload.to doesnt exist</span>
<span class="macro">sqlx::query!</span>(

View File

@@ -206,7 +206,7 @@
}
<span class="kw">impl</span> <span class="ident">From</span><span class="op">&lt;</span><span class="ident">Notification</span><span class="op">&gt;</span> <span class="kw">for</span> <span class="ident">NotificationResp</span> {
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">n</span>: <span class="ident">Notification</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">n</span>: <span class="ident">Notification</span>) -&gt; <span class="self">Self</span> {
<span class="ident">NotificationResp</span> {
<span class="ident">name</span>: <span class="ident">n</span>.<span class="ident">name</span>.<span class="ident">unwrap</span>(),
<span class="ident">heading</span>: <span class="ident">n</span>.<span class="ident">heading</span>.<span class="ident">unwrap</span>(),
@@ -225,7 +225,7 @@
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">get_notification</span>(
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">let</span> <span class="ident">receiver</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="comment">// TODO handle error where payload.to doesnt exist</span>
@@ -246,7 +246,7 @@
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">get_notification</span>(
<span class="ident">data</span>: <span class="kw-2">&amp;</span><span class="ident">AppData</span>,
<span class="ident">receiver</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>,
) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Notification</span><span class="op">&gt;</span><span class="op">&gt;</span> {
) -&gt; <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Notification</span><span class="op">&gt;</span><span class="op">&gt;</span> {
<span class="comment">// TODO handle error where payload.to doesnt exist</span>
<span class="kw">let</span> <span class="ident">notifications</span> <span class="op">=</span> <span class="macro">sqlx::query_file_as!</span>(

View File

@@ -200,7 +200,7 @@
<span class="ident">data</span>: <span class="ident">AppData</span>,
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">MarkReadReq</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> {
) -&gt; <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">let</span> <span class="ident">receiver</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="comment">// TODO handle error where payload.to doesnt exist</span>

View File

@@ -73,7 +73,7 @@
}
<span class="kw">impl</span> <span class="ident">Notifications</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Notifications</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="ident">Notifications</span> {
<span class="ident">Notifications</span> {
<span class="ident">add</span>: <span class="string">&quot;/api/v1/notifications/add&quot;</span>,
<span class="ident">mark_read</span>: <span class="string">&quot;/api/v1/notifications/read&quot;</span>,

View File

@@ -230,7 +230,7 @@
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">get_config</span>(
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">GetConfigPayload</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="macro">sqlx::query!</span>(
<span class="string">&quot;SELECT EXISTS (SELECT 1 from mcaptcha_config WHERE key = $1)&quot;</span>,
<span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">key</span>,
@@ -243,13 +243,13 @@
}
<span class="kw">let</span> <span class="ident">payload</span> <span class="op">=</span> <span class="ident">payload</span>.<span class="ident">into_inner</span>();
<span class="kw">match</span> <span class="ident">res</span>.<span class="ident">exists</span> {
<span class="prelude-val">Some</span>(<span class="bool-val">true</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="prelude-val">Some</span>(<span class="bool-val">true</span>) =&gt; {
<span class="kw">match</span> <span class="ident">data</span>.<span class="ident">captcha</span>.<span class="ident">get_pow</span>(<span class="ident">payload</span>.<span class="ident">key</span>.<span class="ident">clone</span>()).<span class="kw">await</span> {
<span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">config</span>)) <span class="op">=</span><span class="op">&gt;</span> {
<span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="ident">config</span>)) =&gt; {
<span class="ident">record_fetch</span>(<span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">key</span>, <span class="kw-2">&amp;</span><span class="ident">data</span>.<span class="ident">db</span>).<span class="kw">await</span>;
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse::Ok</span>().<span class="ident">json</span>(<span class="ident">config</span>))
}
<span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>) =&gt; {
<span class="ident">init_mcaptcha</span>(<span class="kw-2">&amp;</span><span class="ident">data</span>, <span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">key</span>).<span class="kw">await</span><span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">config</span> <span class="op">=</span> <span class="ident">data</span>
.<span class="ident">captcha</span>
@@ -261,19 +261,19 @@
<span class="ident">record_fetch</span>(<span class="kw-2">&amp;</span><span class="ident">payload</span>.<span class="ident">key</span>, <span class="kw-2">&amp;</span><span class="ident">data</span>.<span class="ident">db</span>).<span class="kw">await</span>;
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse::Ok</span>().<span class="ident">json</span>(<span class="ident">config</span>))
}
<span class="prelude-val">Err</span>(<span class="ident">e</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">Err</span>(<span class="ident">e</span>.<span class="ident">into</span>()),
<span class="prelude-val">Err</span>(<span class="ident">e</span>) =&gt; <span class="prelude-val">Err</span>(<span class="ident">e</span>.<span class="ident">into</span>()),
}
}
<span class="prelude-val">Some</span>(<span class="bool-val">false</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::TokenNotFound</span>),
<span class="prelude-val">None</span> <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">Err</span>(<span class="ident">ServiceError::TokenNotFound</span>),
<span class="prelude-val">Some</span>(<span class="bool-val">false</span>) =&gt; <span class="prelude-val">Err</span>(<span class="ident">ServiceError::TokenNotFound</span>),
<span class="prelude-val">None</span> =&gt; <span class="prelude-val">Err</span>(<span class="ident">ServiceError::TokenNotFound</span>),
}
}
<span class="doccomment">/// Call this when [MCaptcha][libmcaptcha::MCaptcha] is not in master.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// This fn gets mcaptcha config from database, builds [Defense][libmcaptcha::Defense],</span>
<span class="doccomment">/// creates [MCaptcha][libmcaptcha::MCaptcha] and adds it to [Master][libmcaptcha::Defense]</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">init_mcaptcha</span>(<span class="ident">data</span>: <span class="kw-2">&amp;</span><span class="ident">AppData</span>, <span class="ident">key</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">init_mcaptcha</span>(<span class="ident">data</span>: <span class="kw-2">&amp;</span><span class="ident">AppData</span>, <span class="ident">key</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>) -&gt; <span class="ident">ServiceResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="comment">// get levels</span>
<span class="kw">let</span> <span class="ident">levels_fut</span> <span class="op">=</span> <span class="macro">sqlx::query_as!</span>(
<span class="ident">I32Levels</span>,

View File

@@ -148,9 +148,9 @@
}
<span class="macro">macro_rules!</span> <span class="ident">rm_scope</span> {
(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span>) <span class="op">=</span><span class="op">&gt;</span> {
(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span>) =&gt; {
<span class="doccomment">/// remove scope for $name route</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="kw-2">&amp;</span><span class="ident">str</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="kw-2">&amp;</span><span class="ident">str</span> {
<span class="self">self</span>.<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>
<span class="comment">//.strip_prefix(&amp;self.scope[..self.scope.len() - 1])</span>
.<span class="ident">strip_prefix</span>(<span class="self">self</span>.<span class="ident">scope</span>)
@@ -160,7 +160,7 @@
}
<span class="kw">impl</span> <span class="ident">PoW</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="self">Self</span> {
<span class="comment">// date: 2021-11-29 16:31</span>
<span class="comment">// commit: 6eb75d7</span>
<span class="comment">// route 404s when scope contained trailing slash</span>

View File

@@ -175,7 +175,7 @@
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">verify_pow</span>(
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">Work</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">payload</span>.<span class="ident">key</span>.<span class="ident">clone</span>();
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">data</span>.<span class="ident">captcha</span>.<span class="ident">verify_pow</span>(<span class="ident">payload</span>.<span class="ident">into_inner</span>()).<span class="kw">await</span><span class="question-mark">?</span>;
<span class="ident">record_solve</span>(<span class="kw-2">&amp;</span><span class="ident">key</span>, <span class="kw-2">&amp;</span><span class="ident">data</span>.<span class="ident">db</span>).<span class="kw">await</span>;

View File

@@ -196,7 +196,7 @@
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">validate_captcha_token</span>(
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op">&lt;</span><span class="ident">VerifyCaptchaResult</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</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> {
) -&gt; <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">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">payload</span>.<span class="ident">key</span>.<span class="ident">clone</span>();
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">data</span>
.<span class="ident">captcha</span>

View File

@@ -91,7 +91,7 @@
}
<span class="kw">impl</span> <span class="ident">Routes</span> {
<span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Routes</span> {
<span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="ident">Routes</span> {
<span class="ident">Routes</span> {
<span class="ident">auth</span>: <span class="ident">Auth::new</span>(),
<span class="ident">account</span>: <span class="ident">Account::new</span>(),

View File

@@ -267,11 +267,11 @@
<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::SETTINGS</span>;
<span class="macro">macro_rules!</span> <span class="ident">enum_system_actor</span> {
(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="kw">type</span>:<span class="macro-nonterminal">ident</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">msg</span>: <span class="macro-nonterminal">$</span><span class="kw">type</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="macro-nonterminal">ServiceResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="kw">type</span>:<span class="macro-nonterminal">ident</span>) =&gt; {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">msg</span>: <span class="macro-nonterminal">$</span><span class="kw">type</span>) -&gt; <span class="macro-nonterminal">ServiceResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="kw">match</span> <span class="self">self</span> {
<span class="ident"><span class="self">Self</span>::Embedded</span>(<span class="ident">val</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">val</span>.<span class="ident">master</span>.<span class="ident">send</span>(<span class="ident">msg</span>).<span class="kw">await</span><span class="question-mark">?</span>.<span class="kw">await</span><span class="question-mark">?</span><span class="question-mark">?</span>,
<span class="ident"><span class="self">Self</span>::Redis</span>(<span class="ident">val</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">val</span>.<span class="ident">master</span>.<span class="ident">send</span>(<span class="ident">msg</span>).<span class="kw">await</span><span class="question-mark">?</span>.<span class="kw">await</span><span class="question-mark">?</span><span class="question-mark">?</span>,
<span class="ident"><span class="self">Self</span>::Embedded</span>(<span class="ident">val</span>) =&gt; <span class="ident">val</span>.<span class="ident">master</span>.<span class="ident">send</span>(<span class="ident">msg</span>).<span class="kw">await</span><span class="question-mark">?</span>.<span class="kw">await</span><span class="question-mark">?</span><span class="question-mark">?</span>,
<span class="ident"><span class="self">Self</span>::Redis</span>(<span class="ident">val</span>) =&gt; <span class="ident">val</span>.<span class="ident">master</span>.<span class="ident">send</span>(<span class="ident">msg</span>).<span class="kw">await</span><span class="question-mark">?</span>.<span class="kw">await</span><span class="question-mark">?</span><span class="question-mark">?</span>,
};
<span class="prelude-val">Ok</span>(())
}
@@ -279,11 +279,11 @@
}
<span class="macro">macro_rules!</span> <span class="ident">enum_system_wrapper</span> {
(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="kw">type</span>:<span class="macro-nonterminal">ty</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">return_type</span>:<span class="ident">ty</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">msg</span>: <span class="macro-nonterminal">$</span><span class="kw">type</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">return_type</span> {
(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>:<span class="ident">ident</span>, <span class="macro-nonterminal">$</span><span class="kw">type</span>:<span class="macro-nonterminal">ty</span>, <span class="macro-nonterminal">$</span><span class="macro-nonterminal">return_type</span>:<span class="ident">ty</span>) =&gt; {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">msg</span>: <span class="macro-nonterminal">$</span><span class="kw">type</span>) -&gt; <span class="macro-nonterminal">$</span><span class="macro-nonterminal">return_type</span> {
<span class="kw">match</span> <span class="self">self</span> {
<span class="ident"><span class="self">Self</span>::Embedded</span>(<span class="ident">val</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">val</span>.<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>(<span class="ident">msg</span>).<span class="kw">await</span>,
<span class="ident"><span class="self">Self</span>::Redis</span>(<span class="ident">val</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">val</span>.<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>(<span class="ident">msg</span>).<span class="kw">await</span>,
<span class="ident"><span class="self">Self</span>::Embedded</span>(<span class="ident">val</span>) =&gt; <span class="ident">val</span>.<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>(<span class="ident">msg</span>).<span class="kw">await</span>,
<span class="ident"><span class="self">Self</span>::Redis</span>(<span class="ident">val</span>) =&gt; <span class="ident">val</span>.<span class="macro-nonterminal">$</span><span class="macro-nonterminal">name</span>(<span class="ident">msg</span>).<span class="kw">await</span>,
}
}
};
@@ -323,7 +323,7 @@
<span class="comment">// utility function to remove captcha</span>
<span class="macro">enum_system_actor!</span>(<span class="ident">remove</span>, <span class="ident">RemoveCaptcha</span>);
<span class="kw">fn</span> <span class="ident">new_system</span><span class="op">&lt;</span><span class="ident">A</span>: <span class="ident">Save</span>, <span class="ident">B</span>: <span class="ident">MasterTrait</span><span class="op">&gt;</span>(<span class="ident">m</span>: <span class="ident">Addr</span><span class="op">&lt;</span><span class="ident">B</span><span class="op">&gt;</span>, <span class="ident">c</span>: <span class="ident">Addr</span><span class="op">&lt;</span><span class="ident">A</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">System</span><span class="op">&lt;</span><span class="ident">A</span>, <span class="ident">B</span><span class="op">&gt;</span> {
<span class="kw">fn</span> <span class="ident">new_system</span><span class="op">&lt;</span><span class="ident">A</span>: <span class="ident">Save</span>, <span class="ident">B</span>: <span class="ident">MasterTrait</span><span class="op">&gt;</span>(<span class="ident">m</span>: <span class="ident">Addr</span><span class="op">&lt;</span><span class="ident">B</span><span class="op">&gt;</span>, <span class="ident">c</span>: <span class="ident">Addr</span><span class="op">&lt;</span><span class="ident">A</span><span class="op">&gt;</span>) -&gt; <span class="ident">System</span><span class="op">&lt;</span><span class="ident">A</span>, <span class="ident">B</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">pow</span> <span class="op">=</span> <span class="ident">PoWConfigBuilder::default</span>()
.<span class="ident">salt</span>(<span class="ident">SETTINGS</span>.<span class="ident">pow</span>.<span class="ident">salt</span>.<span class="ident">clone</span>())
.<span class="ident">build</span>()
@@ -334,9 +334,9 @@
<span class="comment">// read settings, if Redis is configured then produce a Redis mCaptcha cache</span>
<span class="comment">// based SystemGroup</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="self">Self</span> {
<span class="kw">match</span> <span class="kw-2">&amp;</span><span class="ident">SETTINGS</span>.<span class="ident">redis</span> {
<span class="prelude-val">Some</span>(<span class="ident">val</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="prelude-val">Some</span>(<span class="ident">val</span>) =&gt; {
<span class="kw">let</span> <span class="ident">master</span> <span class="op">=</span> <span class="ident">RedisMaster::new</span>(<span class="ident">RedisConfig::Single</span>(<span class="ident">val</span>.<span class="ident">url</span>.<span class="ident">clone</span>()))
.<span class="kw">await</span>
.<span class="ident">unwrap</span>()
@@ -349,7 +349,7 @@
<span class="ident">SystemGroup::Redis</span>(<span class="ident">captcha</span>)
}
<span class="prelude-val">None</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="prelude-val">None</span> =&gt; {
<span class="kw">let</span> <span class="ident">master</span> <span class="op">=</span> <span class="ident">EmbeddedMaster::new</span>(<span class="ident">SETTINGS</span>.<span class="ident">pow</span>.<span class="ident">gc</span>).<span class="ident">start</span>();
<span class="kw">let</span> <span class="ident">cache</span> <span class="op">=</span> <span class="ident">HashCache::default</span>().<span class="ident">start</span>();
<span class="kw">let</span> <span class="ident">captcha</span> <span class="op">=</span> <span class="ident"><span class="self">Self</span>::new_system</span>(<span class="ident">master</span>, <span class="ident">cache</span>);
@@ -373,7 +373,7 @@
}
<span class="kw">impl</span> <span class="ident">Data</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_creds</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Config</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_creds</span>() -&gt; <span class="ident">Config</span> {
<span class="ident">ConfigBuilder::default</span>()
.<span class="ident">username_case_mapped</span>(<span class="bool-val">true</span>)
.<span class="ident">profanity</span>(<span class="bool-val">true</span>)
@@ -384,7 +384,7 @@
}
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="doccomment">/// create new instance of app data</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Arc</span><span class="op">&lt;</span><span class="self">Self</span><span class="op">&gt;</span> {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="ident">Arc</span><span class="op">&lt;</span><span class="self">Self</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">creds</span> <span class="op">=</span> <span class="ident"><span class="self">Self</span>::get_creds</span>();
<span class="kw">let</span> <span class="ident">c</span> <span class="op">=</span> <span class="ident">creds</span>.<span class="ident">clone</span>();
@@ -413,7 +413,7 @@
<span class="ident">Arc::new</span>(<span class="ident">data</span>)
}
<span class="kw">fn</span> <span class="ident">get_mailer</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Mailer</span><span class="op">&gt;</span> {
<span class="kw">fn</span> <span class="ident">get_mailer</span>() -&gt; <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Mailer</span><span class="op">&gt;</span> {
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">smtp</span>) <span class="op">=</span> <span class="ident">SETTINGS</span>.<span class="ident">smtp</span>.<span class="ident">as_ref</span>() {
<span class="kw">let</span> <span class="ident">creds</span> <span class="op">=</span>
<span class="ident">Credentials::new</span>(<span class="ident">smtp</span>.<span class="ident">username</span>.<span class="ident">to_string</span>(), <span class="ident">smtp</span>.<span class="ident">password</span>.<span class="ident">to_string</span>()); <span class="comment">// &quot;smtp_username&quot;.to_string(), &quot;smtp_password&quot;.to_string());</span>

View File

@@ -133,7 +133,7 @@
}
<span class="kw">impl</span> <span class="ident">Debug</span> <span class="kw">for</span> <span class="ident">Date</span> {
<span class="kw">fn</span> <span class="ident">fmt</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">f</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">std::fmt::Formatter</span><span class="op">&lt;</span><span class="lifetime">&#39;_</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">std::fmt::Result</span> {
<span class="kw">fn</span> <span class="ident">fmt</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">f</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">std::fmt::Formatter</span><span class="op">&lt;</span><span class="lifetime">&#39;_</span><span class="op">&gt;</span>) -&gt; <span class="ident">std::fmt::Result</span> {
<span class="ident">f</span>.<span class="ident">debug_struct</span>(<span class="string">&quot;Date&quot;</span>)
.<span class="ident">field</span>(<span class="string">&quot;time&quot;</span>, <span class="kw-2">&amp;</span><span class="self">self</span>.<span class="ident">print_date</span>())
.<span class="ident">finish</span>()
@@ -146,7 +146,7 @@
<span class="kw">pub</span> <span class="kw">const</span> <span class="ident">WEEK</span>: <span class="ident">i64</span> <span class="op">=</span> <span class="ident">DAY</span> <span class="op">*</span> <span class="number">7</span>;
<span class="kw">impl</span> <span class="ident">Date</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">format</span>(<span class="ident">date</span>: <span class="kw-2">&amp;</span><span class="ident">OffsetDateTime</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">String</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">format</span>(<span class="ident">date</span>: <span class="kw-2">&amp;</span><span class="ident">OffsetDateTime</span>) -&gt; <span class="ident">String</span> {
<span class="kw">let</span> <span class="ident">timestamp</span> <span class="op">=</span> <span class="ident">date</span>.<span class="ident">unix_timestamp</span>();
<span class="kw">let</span> <span class="ident">now</span> <span class="op">=</span> <span class="ident">OffsetDateTime::now_utc</span>().<span class="ident">unix_timestamp</span>();
@@ -166,12 +166,12 @@
}
<span class="doccomment">/// print relative time from date</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">print_date</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">String</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">print_date</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="ident">String</span> {
<span class="ident"><span class="self">Self</span>::format</span>(<span class="kw-2">&amp;</span><span class="self">self</span>.<span class="ident">time</span>)
}
<span class="doccomment">/// print date</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">date</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">String</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">date</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="ident">String</span> {
<span class="self">self</span>.<span class="ident">time</span>.<span class="ident">format</span>(<span class="string">&quot;%F %r %z&quot;</span>)
}
}

View File

@@ -177,7 +177,7 @@
<span class="kw">pub</span> <span class="kw">const</span> <span class="ident">DEMO_PASSWORD</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;password&quot;</span>;
<span class="doccomment">/// register demo user runner</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">register_demo_user</span>(<span class="ident">data</span>: <span class="kw-2">&amp;</span><span class="ident">AppData</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">register_demo_user</span>(<span class="ident">data</span>: <span class="kw-2">&amp;</span><span class="ident">AppData</span>) -&gt; <span class="ident">ServiceResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">user_exists_payload</span> <span class="op">=</span> <span class="ident">AccountCheckPayload</span> {
<span class="ident">val</span>: <span class="ident">DEMO_USER</span>.<span class="ident">into</span>(),
};
@@ -192,21 +192,21 @@
<span class="macro">log::info!</span>(<span class="string">&quot;Registering demo user&quot;</span>);
<span class="kw">match</span> <span class="ident">register_runner</span>(<span class="kw-2">&amp;</span><span class="ident">register_payload</span>, <span class="ident">data</span>).<span class="kw">await</span> {
<span class="prelude-val">Err</span>(<span class="ident">ServiceError::UsernameTaken</span>) <span class="op">|</span> <span class="prelude-val">Ok</span>(<span class="kw">_</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">Ok</span>(()),
<span class="prelude-val">Err</span>(<span class="ident">e</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">Err</span>(<span class="ident">e</span>),
<span class="prelude-val">Err</span>(<span class="ident">ServiceError::UsernameTaken</span>) <span class="op">|</span> <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; <span class="prelude-val">Ok</span>(()),
<span class="prelude-val">Err</span>(<span class="ident">e</span>) =&gt; <span class="prelude-val">Err</span>(<span class="ident">e</span>),
}
} <span class="kw">else</span> {
<span class="prelude-val">Ok</span>(())
}
}
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">delete_demo_user</span>(<span class="ident">data</span>: <span class="kw-2">&amp;</span><span class="ident">AppData</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">delete_demo_user</span>(<span class="ident">data</span>: <span class="kw-2">&amp;</span><span class="ident">AppData</span>) -&gt; <span class="ident">ServiceResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="macro">log::info!</span>(<span class="string">&quot;Deleting demo user&quot;</span>);
<span class="ident">delete_user</span>(<span class="ident">DEMO_USER</span>, <span class="ident">data</span>).<span class="kw">await</span><span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(())
}
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">run</span>(<span class="ident">data</span>: <span class="ident">AppData</span>, <span class="ident">duration</span>: <span class="ident">Duration</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">run</span>(<span class="ident">data</span>: <span class="ident">AppData</span>, <span class="ident">duration</span>: <span class="ident">Duration</span>) -&gt; <span class="ident">ServiceResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="ident">register_demo_user</span>(<span class="kw-2">&amp;</span><span class="ident">data</span>).<span class="kw">await</span><span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">fut</span> <span class="op">=</span> <span class="kw">async</span> <span class="kw">move</span> {

View File

@@ -165,7 +165,7 @@
}
<span class="kw">impl</span> <span class="ident">Docs</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="self">Self</span> {
<span class="ident">Docs</span> {
<span class="ident">home</span>: <span class="string">&quot;/docs/&quot;</span>,
<span class="ident">spec</span>: <span class="string">&quot;/docs/openapi.yaml&quot;</span>,
@@ -183,12 +183,12 @@
<span class="attribute">#[<span class="ident">folder</span> <span class="op">=</span> <span class="string">&quot;static/openapi/&quot;</span>]</span>
<span class="kw">struct</span> <span class="ident">Asset</span>;
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">handle_embedded_file</span>(<span class="ident">path</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">HttpResponse</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">handle_embedded_file</span>(<span class="ident">path</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>) -&gt; <span class="ident">HttpResponse</span> {
<span class="kw">match</span> <span class="ident">Asset::get</span>(<span class="ident">path</span>) {
<span class="prelude-val">Some</span>(<span class="ident">content</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="prelude-val">Some</span>(<span class="ident">content</span>) =&gt; {
<span class="kw">let</span> <span class="ident">body</span>: <span class="ident">Body</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">content</span>.<span class="ident">data</span> {
<span class="ident">Cow::Borrowed</span>(<span class="ident">bytes</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">bytes</span>.<span class="ident">into</span>(),
<span class="ident">Cow::Owned</span>(<span class="ident">bytes</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">bytes</span>.<span class="ident">into</span>(),
<span class="ident">Cow::Borrowed</span>(<span class="ident">bytes</span>) =&gt; <span class="ident">bytes</span>.<span class="ident">into</span>(),
<span class="ident">Cow::Owned</span>(<span class="ident">bytes</span>) =&gt; <span class="ident">bytes</span>.<span class="ident">into</span>(),
};
<span class="ident">HttpResponse::Ok</span>()
.<span class="ident">insert_header</span>(<span class="ident">header::CacheControl</span>(<span class="macro">vec!</span>[
@@ -197,25 +197,25 @@
.<span class="ident">content_type</span>(<span class="ident">from_path</span>(<span class="ident">path</span>).<span class="ident">first_or_octet_stream</span>().<span class="ident">as_ref</span>())
.<span class="ident">body</span>(<span class="ident">body</span>)
}
<span class="prelude-val">None</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">HttpResponse::NotFound</span>().<span class="ident">body</span>(<span class="string">&quot;404 Not Found&quot;</span>),
<span class="prelude-val">None</span> =&gt; <span class="ident">HttpResponse::NotFound</span>().<span class="ident">body</span>(<span class="string">&quot;404 Not Found&quot;</span>),
}
}
<span class="attribute">#[<span class="ident">my_codegen::get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;DOCS.assets&quot;</span>)]</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">dist</span>(<span class="ident">path</span>: <span class="ident">web::Path</span><span class="op">&lt;</span><span class="ident">String</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">dist</span>(<span class="ident">path</span>: <span class="ident">web::Path</span><span class="op">&lt;</span><span class="ident">String</span><span class="op">&gt;</span>) -&gt; <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="ident">handle_embedded_file</span>(<span class="kw-2">&amp;</span><span class="ident">path</span>)
}
<span class="kw">const</span> <span class="ident">OPEN_API_SPEC</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="macro">include_str!</span>(<span class="string">&quot;../docs/openapi/dist/openapi.yaml&quot;</span>);
<span class="attribute">#[<span class="ident">my_codegen::get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;DOCS.spec&quot;</span>)]</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">spec</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">HttpResponse</span> {
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">spec</span>() -&gt; <span class="ident">HttpResponse</span> {
<span class="ident">HttpResponse::Ok</span>()
.<span class="ident">content_type</span>(<span class="string">&quot;text/yaml&quot;</span>)
.<span class="ident">body</span>(<span class="ident">OPEN_API_SPEC</span>)
}
<span class="attribute">#[<span class="ident">my_codegen::get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;&amp;DOCS.home[0..DOCS.home.len() -1]&quot;</span>)]</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">index</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">HttpResponse</span> {
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">index</span>() -&gt; <span class="ident">HttpResponse</span> {
<span class="ident">handle_embedded_file</span>(<span class="string">&quot;index.html&quot;</span>)
}

View File

@@ -164,7 +164,7 @@
}
<span class="kw">impl</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> <span class="ident">IndexPage</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">verification_link</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">verification_link</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>) -&gt; <span class="self">Self</span> {
<span class="self">Self</span> { <span class="ident">verification_link</span> }
}
}
@@ -173,7 +173,7 @@
<span class="ident">data</span>: <span class="kw-2">&amp;</span><span class="ident">Data</span>,
<span class="ident">to</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>,
<span class="ident">verification_link</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>,
) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
) -&gt; <span class="ident">ServiceResult</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">smtp</span>) <span class="op">=</span> <span class="ident">SETTINGS</span>.<span class="ident">smtp</span>.<span class="ident">as_ref</span>() {
<span class="kw">let</span> <span class="ident">from</span> <span class="op">=</span> <span class="macro">format!</span>(<span class="string">&quot;mCaptcha Admin &lt;{}&gt;&quot;</span>, <span class="ident">smtp</span>.<span class="ident">from</span>);
<span class="kw">let</span> <span class="ident">reply_to</span> <span class="op">=</span> <span class="macro">format!</span>(<span class="string">&quot;mCaptcha Admin &lt;{}&gt;&quot;</span>, <span class="ident">smtp</span>.<span class="ident">reply</span>);

View File

@@ -350,8 +350,8 @@
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">SmtpErrorWrapper</span>(<span class="ident">SmtpError</span>);
<span class="kw">impl</span> <span class="ident">std::cmp::PartialEq</span> <span class="kw">for</span> <span class="ident">SmtpErrorWrapper</span> {
<span class="kw">fn</span> <span class="ident">eq</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">other</span>: <span class="kw-2">&amp;</span><span class="self">Self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">bool</span> {
<span class="self">self</span>.<span class="number">0</span>.<span class="ident">status</span>() <span class="op">=</span><span class="op">=</span> <span class="ident">other</span>.<span class="number">0</span>.<span class="ident">status</span>()
<span class="kw">fn</span> <span class="ident">eq</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">other</span>: <span class="kw-2">&amp;</span><span class="self">Self</span>) -&gt; <span class="ident">bool</span> {
<span class="self">self</span>.<span class="number">0</span>.<span class="ident">status</span>() <span class="op">==</span> <span class="ident">other</span>.<span class="number">0</span>.<span class="ident">status</span>()
}
}
@@ -428,7 +428,7 @@
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">impl</span> <span class="ident">ResponseError</span> <span class="kw">for</span> <span class="ident">ServiceError</span> {
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">fn</span> <span class="ident">error_response</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">HttpResponse</span> {
<span class="kw">fn</span> <span class="ident">error_response</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="ident">HttpResponse</span> {
<span class="ident">HttpResponseBuilder::new</span>(<span class="self">self</span>.<span class="ident">status_code</span>())
.<span class="ident">append_header</span>((<span class="ident">header::CONTENT_TYPE</span>, <span class="string">&quot;application/json; charset=UTF-8&quot;</span>))
.<span class="ident">body</span>(
@@ -441,37 +441,37 @@
}
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">fn</span> <span class="ident">status_code</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">StatusCode</span> {
<span class="kw">fn</span> <span class="ident">status_code</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="ident">StatusCode</span> {
<span class="kw">match</span> <span class="self">self</span> {
<span class="ident">ServiceError::ClosedForRegistration</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode::FORBIDDEN</span>,
<span class="ident">ServiceError::InternalServerError</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode::INTERNAL_SERVER_ERROR</span>,
<span class="ident">ServiceError::NotAnEmail</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::NotAUrl</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::WrongPassword</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode::UNAUTHORIZED</span>,
<span class="ident">ServiceError::UsernameNotFound</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode::NOT_FOUND</span>,
<span class="ident">ServiceError::AccountNotFound</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode::NOT_FOUND</span>,
<span class="ident">ServiceError::ClosedForRegistration</span> =&gt; <span class="ident">StatusCode::FORBIDDEN</span>,
<span class="ident">ServiceError::InternalServerError</span> =&gt; <span class="ident">StatusCode::INTERNAL_SERVER_ERROR</span>,
<span class="ident">ServiceError::NotAnEmail</span> =&gt; <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::NotAUrl</span> =&gt; <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::WrongPassword</span> =&gt; <span class="ident">StatusCode::UNAUTHORIZED</span>,
<span class="ident">ServiceError::UsernameNotFound</span> =&gt; <span class="ident">StatusCode::NOT_FOUND</span>,
<span class="ident">ServiceError::AccountNotFound</span> =&gt; <span class="ident">StatusCode::NOT_FOUND</span>,
<span class="ident">ServiceError::ProfainityError</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::BlacklistError</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::UsernameCaseMappedError</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::ProfainityError</span> =&gt; <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::BlacklistError</span> =&gt; <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::UsernameCaseMappedError</span> =&gt; <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::PasswordTooShort</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::PasswordTooLong</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::PasswordsDontMatch</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::PasswordTooShort</span> =&gt; <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::PasswordTooLong</span> =&gt; <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::PasswordsDontMatch</span> =&gt; <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::UsernameTaken</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::EmailTaken</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::UsernameTaken</span> =&gt; <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::EmailTaken</span> =&gt; <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">ServiceError::TokenNotFound</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode::NOT_FOUND</span>,
<span class="ident">ServiceError::CaptchaError</span>(<span class="ident">e</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="ident">ServiceError::TokenNotFound</span> =&gt; <span class="ident">StatusCode::NOT_FOUND</span>,
<span class="ident">ServiceError::CaptchaError</span>(<span class="ident">e</span>) =&gt; {
<span class="macro">log::error!</span>(<span class="string">&quot;{}&quot;</span>, <span class="ident">e</span>);
<span class="kw">match</span> <span class="ident">e</span> {
<span class="ident">CaptchaError::MailboxError</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode::INTERNAL_SERVER_ERROR</span>,
<span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode::BAD_REQUEST</span>,
<span class="ident">CaptchaError::MailboxError</span> =&gt; <span class="ident">StatusCode::INTERNAL_SERVER_ERROR</span>,
<span class="kw">_</span> =&gt; <span class="ident">StatusCode::BAD_REQUEST</span>,
}
}
<span class="ident">ServiceError::UnableToSendEmail</span>(<span class="ident">e</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="ident">ServiceError::UnableToSendEmail</span>(<span class="ident">e</span>) =&gt; {
<span class="macro">log::error!</span>(<span class="string">&quot;{}&quot;</span>, <span class="ident">e</span>.<span class="number">0</span>);
<span class="ident">StatusCode::INTERNAL_SERVER_ERROR</span>
}
@@ -481,36 +481,36 @@
<span class="kw">impl</span> <span class="ident">From</span><span class="op">&lt;</span><span class="ident">CredsError</span><span class="op">&gt;</span> <span class="kw">for</span> <span class="ident">ServiceError</span> {
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">e</span>: <span class="ident">CredsError</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceError</span> {
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">e</span>: <span class="ident">CredsError</span>) -&gt; <span class="ident">ServiceError</span> {
<span class="kw">match</span> <span class="ident">e</span> {
<span class="ident">CredsError::UsernameCaseMappedError</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">ServiceError::UsernameCaseMappedError</span>,
<span class="ident">CredsError::ProfainityError</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">ServiceError::ProfainityError</span>,
<span class="ident">CredsError::BlacklistError</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">ServiceError::BlacklistError</span>,
<span class="ident">CredsError::NotAnEmail</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">ServiceError::NotAnEmail</span>,
<span class="ident">CredsError::Argon2Error</span>(<span class="kw">_</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">ServiceError::InternalServerError</span>,
<span class="ident">CredsError::PasswordTooLong</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">ServiceError::PasswordTooLong</span>,
<span class="ident">CredsError::PasswordTooShort</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">ServiceError::PasswordTooShort</span>,
<span class="ident">CredsError::UsernameCaseMappedError</span> =&gt; <span class="ident">ServiceError::UsernameCaseMappedError</span>,
<span class="ident">CredsError::ProfainityError</span> =&gt; <span class="ident">ServiceError::ProfainityError</span>,
<span class="ident">CredsError::BlacklistError</span> =&gt; <span class="ident">ServiceError::BlacklistError</span>,
<span class="ident">CredsError::NotAnEmail</span> =&gt; <span class="ident">ServiceError::NotAnEmail</span>,
<span class="ident">CredsError::Argon2Error</span>(<span class="kw">_</span>) =&gt; <span class="ident">ServiceError::InternalServerError</span>,
<span class="ident">CredsError::PasswordTooLong</span> =&gt; <span class="ident">ServiceError::PasswordTooLong</span>,
<span class="ident">CredsError::PasswordTooShort</span> =&gt; <span class="ident">ServiceError::PasswordTooShort</span>,
}
}
}
<span class="kw">impl</span> <span class="ident">From</span><span class="op">&lt;</span><span class="ident">ValidationErrors</span><span class="op">&gt;</span> <span class="kw">for</span> <span class="ident">ServiceError</span> {
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">fn</span> <span class="ident">from</span>(<span class="kw">_</span>: <span class="ident">ValidationErrors</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceError</span> {
<span class="kw">fn</span> <span class="ident">from</span>(<span class="kw">_</span>: <span class="ident">ValidationErrors</span>) -&gt; <span class="ident">ServiceError</span> {
<span class="ident">ServiceError::NotAnEmail</span>
}
}
<span class="kw">impl</span> <span class="ident">From</span><span class="op">&lt;</span><span class="ident">ParseError</span><span class="op">&gt;</span> <span class="kw">for</span> <span class="ident">ServiceError</span> {
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">fn</span> <span class="ident">from</span>(<span class="kw">_</span>: <span class="ident">ParseError</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceError</span> {
<span class="kw">fn</span> <span class="ident">from</span>(<span class="kw">_</span>: <span class="ident">ParseError</span>) -&gt; <span class="ident">ServiceError</span> {
<span class="ident">ServiceError::NotAUrl</span>
}
}
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">impl</span> <span class="ident">From</span><span class="op">&lt;</span><span class="ident">CaptchaError</span><span class="op">&gt;</span> <span class="kw">for</span> <span class="ident">ServiceError</span> {
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">e</span>: <span class="ident">CaptchaError</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceError</span> {
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">e</span>: <span class="ident">CaptchaError</span>) -&gt; <span class="ident">ServiceError</span> {
<span class="ident">ServiceError::CaptchaError</span>(<span class="ident">e</span>)
}
}
@@ -518,11 +518,11 @@
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">impl</span> <span class="ident">From</span><span class="op">&lt;</span><span class="ident">sqlx::Error</span><span class="op">&gt;</span> <span class="kw">for</span> <span class="ident">ServiceError</span> {
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">e</span>: <span class="ident">sqlx::Error</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">e</span>: <span class="ident">sqlx::Error</span>) -&gt; <span class="self">Self</span> {
<span class="kw">use</span> <span class="ident">sqlx::error::Error</span>;
<span class="kw">use</span> <span class="ident">std::borrow::Cow</span>;
<span class="kw">if</span> <span class="kw">let</span> <span class="ident">Error::Database</span>(<span class="ident">err</span>) <span class="op">=</span> <span class="ident">e</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::from</span>(<span class="string">&quot;23505&quot;</span>)) {
<span class="kw">if</span> <span class="ident">err</span>.<span class="ident">code</span>() <span class="op">==</span> <span class="prelude-val">Some</span>(<span class="ident">Cow::from</span>(<span class="string">&quot;23505&quot;</span>)) {
<span class="kw">return</span> <span class="ident">ServiceError::UsernameTaken</span>;
}
}
@@ -533,7 +533,7 @@
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">impl</span> <span class="ident">From</span><span class="op">&lt;</span><span class="ident">SmtpError</span><span class="op">&gt;</span> <span class="kw">for</span> <span class="ident">ServiceError</span> {
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">e</span>: <span class="ident">SmtpError</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">e</span>: <span class="ident">SmtpError</span>) -&gt; <span class="self">Self</span> {
<span class="ident">ServiceError::UnableToSendEmail</span>(<span class="ident">SmtpErrorWrapper</span>(<span class="ident">e</span>))
}
}
@@ -541,7 +541,7 @@
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">impl</span> <span class="ident">From</span><span class="op">&lt;</span><span class="ident">RecvError</span><span class="op">&gt;</span> <span class="kw">for</span> <span class="ident">ServiceError</span> {
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">e</span>: <span class="ident">RecvError</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">e</span>: <span class="ident">RecvError</span>) -&gt; <span class="self">Self</span> {
<span class="macro">log::error!</span>(<span class="string">&quot;{:?}&quot;</span>, <span class="ident">e</span>);
<span class="ident">ServiceError::InternalServerError</span>
}
@@ -550,7 +550,7 @@
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">impl</span> <span class="ident">From</span><span class="op">&lt;</span><span class="ident">MailboxError</span><span class="op">&gt;</span> <span class="kw">for</span> <span class="ident">ServiceError</span> {
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">e</span>: <span class="ident">MailboxError</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">e</span>: <span class="ident">MailboxError</span>) -&gt; <span class="self">Self</span> {
<span class="macro">log::error!</span>(<span class="string">&quot;{:?}&quot;</span>, <span class="ident">e</span>);
<span class="ident">ServiceError::InternalServerError</span>
}
@@ -572,7 +572,7 @@
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">impl</span> <span class="ident">From</span><span class="op">&lt;</span><span class="ident">sqlx::Error</span><span class="op">&gt;</span> <span class="kw">for</span> <span class="ident">PageError</span> {
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">fn</span> <span class="ident">from</span>(<span class="kw">_</span>: <span class="ident">sqlx::Error</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">from</span>(<span class="kw">_</span>: <span class="ident">sqlx::Error</span>) -&gt; <span class="self">Self</span> {
<span class="ident">PageError::InternalServerError</span>
}
}
@@ -580,29 +580,29 @@
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">impl</span> <span class="ident">From</span><span class="op">&lt;</span><span class="ident">ServiceError</span><span class="op">&gt;</span> <span class="kw">for</span> <span class="ident">PageError</span> {
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">e</span>: <span class="ident">ServiceError</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">e</span>: <span class="ident">ServiceError</span>) -&gt; <span class="self">Self</span> {
<span class="ident">PageError::ServiceError</span>(<span class="ident">e</span>)
}
}
<span class="kw">impl</span> <span class="ident">ResponseError</span> <span class="kw">for</span> <span class="ident">PageError</span> {
<span class="kw">fn</span> <span class="ident">error_response</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">HttpResponse</span> {
<span class="kw">fn</span> <span class="ident">error_response</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="ident">HttpResponse</span> {
<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::PAGES</span>;
<span class="kw">match</span> <span class="self">self</span>.<span class="ident">status_code</span>() {
<span class="ident">StatusCode::INTERNAL_SERVER_ERROR</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">HttpResponse::Found</span>()
<span class="ident">StatusCode::INTERNAL_SERVER_ERROR</span> =&gt; <span class="ident">HttpResponse::Found</span>()
.<span class="ident">append_header</span>((<span class="ident">header::LOCATION</span>, <span class="ident">PAGES</span>.<span class="ident">errors</span>.<span class="ident">internal_server_error</span>))
.<span class="ident">finish</span>(),
<span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">HttpResponse::Found</span>()
<span class="kw">_</span> =&gt; <span class="ident">HttpResponse::Found</span>()
.<span class="ident">append_header</span>((<span class="ident">header::LOCATION</span>, <span class="ident">PAGES</span>.<span class="ident">errors</span>.<span class="ident">unknown_error</span>))
.<span class="ident">finish</span>(),
}
}
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">fn</span> <span class="ident">status_code</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">StatusCode</span> {
<span class="kw">fn</span> <span class="ident">status_code</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="ident">StatusCode</span> {
<span class="kw">match</span> <span class="self">self</span> {
<span class="ident">PageError::InternalServerError</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode::INTERNAL_SERVER_ERROR</span>,
<span class="ident">PageError::ServiceError</span>(<span class="ident">e</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">e</span>.<span class="ident">status_code</span>(),
<span class="ident">PageError::InternalServerError</span> =&gt; <span class="ident">StatusCode::INTERNAL_SERVER_ERROR</span>,
<span class="ident">PageError::ServiceError</span>(<span class="ident">e</span>) =&gt; <span class="ident">e</span>.<span class="ident">status_code</span>(),
}
}
}

View File

@@ -279,7 +279,7 @@
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="attribute">#[<span class="ident">actix_web::main</span>]</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">main</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">std::io::Result</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">main</span>() -&gt; <span class="ident">std::io::Result</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="kw">use</span> <span class="ident">std::time::Duration</span>;
<span class="ident">env::set_var</span>(<span class="string">&quot;RUST_LOG&quot;</span>, <span class="string">&quot;info&quot;</span>);
@@ -325,7 +325,7 @@
}
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_json_err</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">JsonConfig</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_json_err</span>() -&gt; <span class="ident">JsonConfig</span> {
<span class="ident">JsonConfig::default</span>().<span class="ident">error_handler</span>(<span class="op">|</span><span class="ident">err</span>, <span class="kw">_</span><span class="op">|</span> {
<span class="comment">//debug!(&quot;JSON deserialization error: {:?}&quot;, &amp;err);</span>
<span class="ident">InternalError::new</span>(<span class="ident">err</span>, <span class="ident">StatusCode::BAD_REQUEST</span>).<span class="ident">into</span>()
@@ -333,7 +333,7 @@
}
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_identity_service</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">IdentityService</span><span class="op">&lt;</span><span class="ident">CookieIdentityPolicy</span><span class="op">&gt;</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_identity_service</span>() -&gt; <span class="ident">IdentityService</span><span class="op">&lt;</span><span class="ident">CookieIdentityPolicy</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">cookie_secret</span> <span class="op">=</span> <span class="kw-2">&amp;</span><span class="ident">SETTINGS</span>.<span class="ident">server</span>.<span class="ident">cookie_secret</span>;
<span class="ident">IdentityService::new</span>(
<span class="ident">CookieIdentityPolicy::new</span>(<span class="ident">cookie_secret</span>.<span class="ident">as_bytes</span>())

View File

@@ -147,7 +147,7 @@
<span class="kw">type</span> <span class="ident">InitError</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">&lt;</span><span class="prelude-ty">Result</span><span class="op">&lt;</span><span class="ident"><span class="self">Self</span>::Transform</span>, <span class="ident"><span class="self">Self</span>::InitError</span><span class="op">&gt;</span><span class="op">&gt;</span>;
<span class="kw">fn</span> <span class="ident">new_transform</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">service</span>: <span class="ident">S</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident"><span class="self">Self</span>::Future</span> {
<span class="kw">fn</span> <span class="ident">new_transform</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">service</span>: <span class="ident">S</span>) -&gt; <span class="ident"><span class="self">Self</span>::Future</span> {
<span class="ident">ok</span>(<span class="ident">CheckLoginMiddleware</span> { <span class="ident">service</span> })
}
}
@@ -170,7 +170,7 @@
<span class="comment">//</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">&amp;</span><span class="self">self</span>, <span class="ident">req</span>: <span class="ident">ServiceRequest</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident"><span class="self">Self</span>::Future</span> {
<span class="kw">fn</span> <span class="ident">call</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">req</span>: <span class="ident">ServiceRequest</span>) -&gt; <span class="ident"><span class="self">Self</span>::Future</span> {
<span class="comment">// let (r, mut pl) = req.into_parts();</span>
<span class="comment">// // TODO investigate when the bellow statement will</span>

View File

@@ -73,7 +73,7 @@
<span class="kw">const</span> <span class="ident">PAGE</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;Login&quot;</span>;
<span class="kw">impl</span> <span class="ident">Default</span> <span class="kw">for</span> <span class="ident">IndexPage</span> {
<span class="kw">fn</span> <span class="ident">default</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">default</span>() -&gt; <span class="self">Self</span> {
<span class="ident">IndexPage</span>
}
}
@@ -83,7 +83,7 @@
}
<span class="attribute">#[<span class="ident">get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;PAGES.auth.login&quot;</span>)]</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">login</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">login</span>() -&gt; <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="ident">HttpResponse::Ok</span>()
.<span class="ident">content_type</span>(<span class="string">&quot;text/html; charset=utf-8&quot;</span>)
.<span class="ident">body</span>(<span class="kw-2">&amp;</span><span class="kw-2">*</span><span class="ident">INDEX</span>)

View File

@@ -75,14 +75,14 @@
<span class="kw">pub</span> <span class="ident">join</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;static</span> <span class="ident">str</span>,
}
<span class="kw">impl</span> <span class="ident">Auth</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Auth</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="ident">Auth</span> {
<span class="ident">Auth</span> {
<span class="ident">login</span>: <span class="string">&quot;/login&quot;</span>,
<span class="ident">join</span>: <span class="string">&quot;/join&quot;</span>,
}
}
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">get_sitemap</span>() <span class="op">-</span><span class="op">&gt;</span> [<span class="kw-2">&amp;</span><span class="lifetime">&#39;static</span> <span class="ident">str</span>; <span class="number">2</span>] {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">get_sitemap</span>() -&gt; [<span class="kw-2">&amp;</span><span class="lifetime">&#39;static</span> <span class="ident">str</span>; <span class="number">2</span>] {
<span class="kw">const</span> <span class="ident">AUTH</span>: <span class="ident">Auth</span> <span class="op">=</span> <span class="ident">Auth::new</span>();
[<span class="ident">AUTH</span>.<span class="ident">login</span>, <span class="ident">AUTH</span>.<span class="ident">join</span>]
}

View File

@@ -69,7 +69,7 @@
<span class="kw">const</span> <span class="ident">PAGE</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;Join&quot;</span>;
<span class="kw">impl</span> <span class="ident">Default</span> <span class="kw">for</span> <span class="ident">IndexPage</span> {
<span class="kw">fn</span> <span class="ident">default</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">default</span>() -&gt; <span class="self">Self</span> {
<span class="ident">IndexPage</span>
}
}
@@ -79,7 +79,7 @@
}
<span class="attribute">#[<span class="ident">my_codegen::get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;crate::PAGES.auth.join&quot;</span>)]</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">join</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">join</span>() -&gt; <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="ident">HttpResponse::Ok</span>()
.<span class="ident">content_type</span>(<span class="string">&quot;text/html; charset=utf-8&quot;</span>)
.<span class="ident">body</span>(<span class="kw-2">&amp;</span><span class="kw-2">*</span><span class="ident">INDEX</span>)

View File

@@ -84,7 +84,7 @@
<span class="ident">V</span>: <span class="ident">Display</span> <span class="op">+</span> <span class="ident">Render</span>,
{
<span class="comment">//pub fn new(url: &amp;&#39;a str, data: Option&lt;Vec&lt;(&amp;&#39;a str, &amp;&#39;a str)&gt;&gt;) -&gt; Self {</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">url</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>, <span class="ident">data</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Vec</span><span class="op">&lt;</span>(<span class="ident">K</span>, <span class="ident">V</span>)<span class="op">&gt;</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">url</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>, <span class="ident">data</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Vec</span><span class="op">&lt;</span>(<span class="ident">K</span>, <span class="ident">V</span>)<span class="op">&gt;</span><span class="op">&gt;</span>) -&gt; <span class="self">Self</span> {
<span class="self">Self</span> { <span class="ident">url</span>, <span class="ident">data</span> }
}
}

View File

@@ -147,7 +147,7 @@
<span class="kw">const</span> <span class="ident">PAGE</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;Error&quot;</span>;
<span class="kw">impl</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> <span class="ident">ErrorPage</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">title</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>, <span class="ident">message</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">title</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>, <span class="ident">message</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>) -&gt; <span class="self">Self</span> {
<span class="ident">ErrorPage</span> { <span class="ident">title</span>, <span class="ident">message</span> }
}
}
@@ -170,13 +170,13 @@
<span class="kw">const</span> <span class="ident">ERROR_ROUTE</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;/error/{id}&quot;</span>;
<span class="attribute">#[<span class="ident">my_codegen::get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;ERROR_ROUTE&quot;</span>)]</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">error</span>(<span class="ident">path</span>: <span class="ident">web::Path</span><span class="op">&lt;</span><span class="ident">usize</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">error</span>(<span class="ident">path</span>: <span class="ident">web::Path</span><span class="op">&lt;</span><span class="ident">usize</span><span class="op">&gt;</span>) -&gt; <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">let</span> <span class="ident">resp</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">path</span>.<span class="ident">into_inner</span>() {
<span class="number">500</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">HttpResponse::InternalServerError</span>()
<span class="number">500</span> =&gt; <span class="ident">HttpResponse::InternalServerError</span>()
.<span class="ident">content_type</span>(<span class="string">&quot;text/html; charset=utf-8&quot;</span>)
.<span class="ident">body</span>(<span class="kw-2">&amp;</span><span class="kw-2">*</span><span class="ident">INTERNAL_SERVER_ERROR_BODY</span>),
<span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">HttpResponse::InternalServerError</span>()
<span class="kw">_</span> =&gt; <span class="ident">HttpResponse::InternalServerError</span>()
.<span class="ident">content_type</span>(<span class="string">&quot;text/html; charset=utf-8&quot;</span>)
.<span class="ident">body</span>(<span class="kw-2">&amp;</span><span class="kw-2">*</span><span class="ident">UNKNOWN_ERROR_BODY</span>),
};
@@ -195,7 +195,7 @@
}
<span class="kw">impl</span> <span class="ident">Errors</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="self">Self</span> {
<span class="ident">Errors</span> {
<span class="ident">internal_server_error</span>: <span class="string">&quot;/error/500&quot;</span>,
<span class="ident">unknown_error</span>: <span class="string">&quot;/error/007&quot;</span>,

View File

@@ -128,7 +128,7 @@
}
<span class="kw">impl</span> <span class="ident">IndexPage</span> {
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">sitekeys</span>: <span class="ident">SiteKeys</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">sitekeys</span>: <span class="ident">SiteKeys</span>) -&gt; <span class="self">Self</span> {
<span class="ident">IndexPage</span> { <span class="ident">sitekeys</span> }
}
}
@@ -136,7 +136,7 @@
<span class="kw">const</span> <span class="ident">PAGE</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;Dashboard&quot;</span>;
<span class="attribute">#[<span class="ident">my_codegen::get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;crate::PAGES.panel.home&quot;</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">&quot;crate::CheckLogin&quot;</span>)]</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">panel</span>(<span class="ident">data</span>: <span class="ident">AppData</span>, <span class="ident">id</span>: <span class="ident">Identity</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">PageResult</span><span class="op">&lt;</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">&gt;</span> {
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">panel</span>(<span class="ident">data</span>: <span class="ident">AppData</span>, <span class="ident">id</span>: <span class="ident">Identity</span>) -&gt; <span class="ident">PageResult</span><span class="op">&lt;</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">sitekeys</span> <span class="op">=</span> <span class="ident">get_list_sitekeys</span>(<span class="kw-2">&amp;</span><span class="ident">data</span>, <span class="kw-2">&amp;</span><span class="ident">id</span>).<span class="kw">await</span><span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">body</span> <span class="op">=</span> <span class="ident">IndexPage::new</span>(<span class="ident">sitekeys</span>).<span class="ident">render_once</span>().<span class="ident">unwrap</span>();
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse::Ok</span>()
@@ -163,7 +163,7 @@
}
<span class="kw">impl</span> <span class="ident">Panel</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="self">Self</span> {
<span class="ident">Panel</span> {
<span class="ident">home</span>: <span class="string">&quot;/&quot;</span>,
<span class="ident">sitekey</span>: <span class="ident">Sitekey::new</span>(),
@@ -172,7 +172,7 @@
}
}
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">get_sitemap</span>() <span class="op">-</span><span class="op">&gt;</span> [<span class="kw-2">&amp;</span><span class="lifetime">&#39;static</span> <span class="ident">str</span>; <span class="number">5</span>] {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">get_sitemap</span>() -&gt; [<span class="kw-2">&amp;</span><span class="lifetime">&#39;static</span> <span class="ident">str</span>; <span class="number">5</span>] {
<span class="kw">const</span> <span class="ident">PANEL</span>: <span class="ident">Panel</span> <span class="op">=</span> <span class="ident">Panel::new</span>();
<span class="kw">const</span> <span class="ident">S</span>: [<span class="kw-2">&amp;</span><span class="ident">str</span>; <span class="number">2</span>] <span class="op">=</span> <span class="ident">Sitekey::get_sitemap</span>();

View File

@@ -160,7 +160,7 @@
}
<span class="kw">impl</span> <span class="ident">IndexPage</span> {
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">n</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Notification</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">n</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Notification</span><span class="op">&gt;</span>) -&gt; <span class="self">Self</span> {
<span class="ident">IndexPage</span> { <span class="ident">n</span> }
}
}
@@ -174,7 +174,7 @@
}
<span class="kw">impl</span> <span class="ident">From</span><span class="op">&lt;</span><span class="ident">get::Notification</span><span class="op">&gt;</span> <span class="kw">for</span> <span class="ident">Notification</span> {
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">n</span>: <span class="ident">get::Notification</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">n</span>: <span class="ident">get::Notification</span>) -&gt; <span class="self">Self</span> {
<span class="ident">Notification</span> {
<span class="ident">name</span>: <span class="ident">n</span>.<span class="ident">name</span>.<span class="ident">unwrap</span>(),
<span class="ident">heading</span>: <span class="ident">n</span>.<span class="ident">heading</span>.<span class="ident">unwrap</span>(),
@@ -186,7 +186,7 @@
}
<span class="kw">impl</span> <span class="ident">Notification</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">print_date</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">String</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">print_date</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="ident">String</span> {
<span class="ident">Date::format</span>(<span class="kw-2">&amp;</span><span class="self">self</span>.<span class="ident">received</span>)
}
}
@@ -194,7 +194,7 @@
<span class="kw">const</span> <span class="ident">PAGE</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;Notifications&quot;</span>;
<span class="attribute">#[<span class="ident">my_codegen::get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;crate::PAGES.panel.notifications&quot;</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">&quot;crate::CheckLogin&quot;</span>)]</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">notifications</span>(<span class="ident">data</span>: <span class="ident">AppData</span>, <span class="ident">id</span>: <span class="ident">Identity</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">PageResult</span><span class="op">&lt;</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">&gt;</span> {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">notifications</span>(<span class="ident">data</span>: <span class="ident">AppData</span>, <span class="ident">id</span>: <span class="ident">Identity</span>) -&gt; <span class="ident">PageResult</span><span class="op">&lt;</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">receiver</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="comment">// TODO handle error where payload.to doesnt exist</span>

View File

@@ -148,7 +148,7 @@
}
<span class="kw">impl</span> <span class="ident">Settings</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="self">Self</span> {
<span class="ident">Settings</span> {
<span class="ident">home</span>: <span class="string">&quot;/settings&quot;</span>,
<span class="ident">delete_account</span>: <span class="string">&quot;/settings/account/delete&quot;</span>,
@@ -156,7 +156,7 @@
}
}
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">get_sitemap</span>() <span class="op">-</span><span class="op">&gt;</span> [<span class="kw-2">&amp;</span><span class="lifetime">&#39;static</span> <span class="ident">str</span>; <span class="number">1</span>] {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">get_sitemap</span>() -&gt; [<span class="kw-2">&amp;</span><span class="lifetime">&#39;static</span> <span class="ident">str</span>; <span class="number">1</span>] {
<span class="kw">const</span> <span class="ident">S</span>: <span class="ident">Settings</span> <span class="op">=</span> <span class="ident">Settings::new</span>();
[<span class="ident">S</span>.<span class="ident">home</span>]
@@ -181,7 +181,7 @@
}
<span class="attribute">#[<span class="ident">my_codegen::get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;crate::PAGES.panel.settings.home&quot;</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">&quot;crate::CheckLogin&quot;</span>)]</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">settings</span>(<span class="ident">data</span>: <span class="ident">AppData</span>, <span class="ident">id</span>: <span class="ident">Identity</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">PageResult</span><span class="op">&lt;</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">&gt;</span> {
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">settings</span>(<span class="ident">data</span>: <span class="ident">AppData</span>, <span class="ident">id</span>: <span class="ident">Identity</span>) -&gt; <span class="ident">PageResult</span><span class="op">&lt;</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="kw">struct</span> <span class="ident">DBResult</span> {
@@ -213,7 +213,7 @@
<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;crate::PAGES.panel.settings.delete_account&quot;</span>,
<span class="ident">wrap</span> <span class="op">=</span> <span class="string">&quot;crate::CheckLogin&quot;</span>
)]</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">delete_account</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">delete_account</span>() -&gt; <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">let</span> <span class="ident">page</span> <span class="op">=</span> <span class="ident">SudoPage</span>::<span class="op">&lt;</span><span class="ident">u8</span>, <span class="ident">u8</span><span class="op">&gt;</span><span class="ident">::new</span>(<span class="ident"><span class="kw">crate</span>::V1_API_ROUTES</span>.<span class="ident">account</span>.<span class="ident">delete</span>, <span class="prelude-val">None</span>)
.<span class="ident">render_once</span>()
.<span class="ident">unwrap</span>();
@@ -226,7 +226,7 @@
<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;crate::PAGES.panel.settings.update_secret&quot;</span>,
<span class="ident">wrap</span> <span class="op">=</span> <span class="string">&quot;crate::CheckLogin&quot;</span>
)]</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">update_secret</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">update_secret</span>() -&gt; <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">let</span> <span class="ident">page</span> <span class="op">=</span> <span class="ident">SudoPage</span>::<span class="op">&lt;</span><span class="ident">u8</span>, <span class="ident">u8</span><span class="op">&gt;</span><span class="ident">::new</span>(<span class="ident"><span class="kw">crate</span>::V1_API_ROUTES</span>.<span class="ident">account</span>.<span class="ident">update_secret</span>, <span class="prelude-val">None</span>)
.<span class="ident">render_once</span>()
.<span class="ident">unwrap</span>();

View File

@@ -88,7 +88,7 @@
}
<span class="kw">impl</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> <span class="ident">Default</span> <span class="kw">for</span> <span class="ident">IndexPage</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
<span class="kw">fn</span> <span class="ident">default</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">default</span>() -&gt; <span class="self">Self</span> {
<span class="ident">IndexPage</span> {
<span class="ident">levels</span>: <span class="number">1</span>,
<span class="ident">form_description</span>: <span class="string">&quot;&quot;</span>,
@@ -99,7 +99,7 @@
}
<span class="attribute">#[<span class="ident">my_codegen::get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;crate::PAGES.panel.sitekey.add&quot;</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">&quot;crate::CheckLogin&quot;</span>)]</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">add_sitekey</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">add_sitekey</span>() -&gt; <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="ident">HttpResponse::Ok</span>()
.<span class="ident">content_type</span>(<span class="string">&quot;text/html; charset=utf-8&quot;</span>)
.<span class="ident">body</span>(<span class="kw-2">&amp;</span><span class="kw-2">*</span><span class="ident">INDEX</span>)

View File

@@ -58,7 +58,7 @@
<span class="kw">use</span> <span class="kw">crate</span>::{<span class="ident">PAGES</span>, <span class="ident">V1_API_ROUTES</span>};
<span class="attribute">#[<span class="ident">get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;PAGES.panel.sitekey.delete&quot;</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">&quot;crate::CheckLogin&quot;</span>)]</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">delete_sitekey</span>(<span class="ident">path</span>: <span class="ident">web::Path</span><span class="op">&lt;</span><span class="ident">String</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">delete_sitekey</span>(<span class="ident">path</span>: <span class="ident">web::Path</span><span class="op">&lt;</span><span class="ident">String</span><span class="op">&gt;</span>) -&gt; <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">path</span>.<span class="ident">into_inner</span>();
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="macro">vec!</span>[(<span class="string">&quot;sitekey&quot;</span>, <span class="ident">key</span>)];
<span class="kw">let</span> <span class="ident">page</span> <span class="op">=</span> <span class="ident">SudoPage::new</span>(<span class="ident">V1_API_ROUTES</span>.<span class="ident">mcaptcha</span>.<span class="ident">delete</span>, <span class="prelude-val">Some</span>(<span class="ident">data</span>))

View File

@@ -193,7 +193,7 @@
}
<span class="kw">impl</span> <span class="ident">IndexPage</span> {
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">config</span>: <span class="ident">McaptchaConfig</span>, <span class="ident">levels</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Level</span><span class="op">&gt;</span>, <span class="ident">key</span>: <span class="ident">String</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">config</span>: <span class="ident">McaptchaConfig</span>, <span class="ident">levels</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Level</span><span class="op">&gt;</span>, <span class="ident">key</span>: <span class="ident">String</span>) -&gt; <span class="self">Self</span> {
<span class="ident">IndexPage</span> {
<span class="ident">duration</span>: <span class="ident">config</span>.<span class="ident">duration</span> <span class="kw">as</span> <span class="ident">u32</span>,
<span class="ident">name</span>: <span class="ident">config</span>.<span class="ident">name</span>,
@@ -209,7 +209,7 @@
<span class="ident">path</span>: <span class="ident">web::Path</span><span class="op">&lt;</span><span class="ident">String</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</span>,
<span class="ident">id</span>: <span class="ident">Identity</span>,
) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">PageResult</span><span class="op">&lt;</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">&gt;</span> {
) -&gt; <span class="ident">PageResult</span><span class="op">&lt;</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">path</span>.<span class="ident">into_inner</span>();

View File

@@ -149,14 +149,14 @@
<span class="kw">const</span> <span class="ident">PAGE</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;SiteKeys&quot;</span>;
<span class="kw">impl</span> <span class="ident">IndexPage</span> {
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">sitekeys</span>: <span class="ident">SiteKeys</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">sitekeys</span>: <span class="ident">SiteKeys</span>) -&gt; <span class="self">Self</span> {
<span class="ident">IndexPage</span> { <span class="ident">sitekeys</span> }
}
}
<span class="doccomment">/// render a list of all sitekeys that a user has</span>
<span class="attribute">#[<span class="ident">my_codegen::get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;crate::PAGES.panel.sitekey.list&quot;</span>, <span class="ident">wrap</span> <span class="op">=</span> <span class="string">&quot;crate::CheckLogin&quot;</span>)]</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">list_sitekeys</span>(<span class="ident">data</span>: <span class="ident">AppData</span>, <span class="ident">id</span>: <span class="ident">Identity</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">PageResult</span><span class="op">&lt;</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">&gt;</span> {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">list_sitekeys</span>(<span class="ident">data</span>: <span class="ident">AppData</span>, <span class="ident">id</span>: <span class="ident">Identity</span>) -&gt; <span class="ident">PageResult</span><span class="op">&lt;</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">get_list_sitekeys</span>(<span class="kw-2">&amp;</span><span class="ident">data</span>, <span class="kw-2">&amp;</span><span class="ident">id</span>).<span class="kw">await</span><span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">body</span> <span class="op">=</span> <span class="ident">IndexPage::new</span>(<span class="ident">res</span>).<span class="ident">render_once</span>().<span class="ident">unwrap</span>();
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse::Ok</span>()
@@ -165,7 +165,7 @@
}
<span class="doccomment">/// utility function to get a list of all sitekeys that a user owns</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">get_list_sitekeys</span>(<span class="ident">data</span>: <span class="kw-2">&amp;</span><span class="ident">AppData</span>, <span class="ident">id</span>: <span class="kw-2">&amp;</span><span class="ident">Identity</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">PageResult</span><span class="op">&lt;</span><span class="ident">SiteKeys</span><span class="op">&gt;</span> {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">get_list_sitekeys</span>(<span class="ident">data</span>: <span class="kw-2">&amp;</span><span class="ident">AppData</span>, <span class="ident">id</span>: <span class="kw-2">&amp;</span><span class="ident">Identity</span>) -&gt; <span class="ident">PageResult</span><span class="op">&lt;</span><span class="ident">SiteKeys</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="macro">sqlx::query_as!</span>(
<span class="ident">MCaptchaDetails</span>,

View File

@@ -87,7 +87,7 @@
}
<span class="kw">impl</span> <span class="ident">Sitekey</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="self">Self</span> {
<span class="ident">Sitekey</span> {
<span class="ident">list</span>: <span class="string">&quot;/sitekeys&quot;</span>,
<span class="ident">add</span>: <span class="string">&quot;/sitekeys/add&quot;</span>,
@@ -96,7 +96,7 @@
<span class="ident">delete</span>: <span class="string">&quot;/sitekey/{key}/delete&quot;</span>,
}
}
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">get_sitemap</span>() <span class="op">-</span><span class="op">&gt;</span> [<span class="kw-2">&amp;</span><span class="lifetime">&#39;static</span> <span class="ident">str</span>; <span class="number">2</span>] {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">get_sitemap</span>() -&gt; [<span class="kw-2">&amp;</span><span class="lifetime">&#39;static</span> <span class="ident">str</span>; <span class="number">2</span>] {
<span class="kw">const</span> <span class="ident">S</span>: <span class="ident">Sitekey</span> <span class="op">=</span> <span class="ident">Sitekey::new</span>();
[<span class="ident">S</span>.<span class="ident">list</span>, <span class="ident">S</span>.<span class="ident">add</span>]
}

View File

@@ -214,7 +214,7 @@
<span class="ident">config</span>: <span class="ident">McaptchaConfig</span>,
<span class="ident">levels</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Level</span><span class="op">&gt;</span>,
<span class="ident">key</span>: <span class="ident">String</span>,
) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
) -&gt; <span class="self">Self</span> {
<span class="ident">IndexPage</span> {
<span class="ident">duration</span>: <span class="ident">config</span>.<span class="ident">duration</span> <span class="kw">as</span> <span class="ident">u32</span>,
<span class="ident">name</span>: <span class="ident">config</span>.<span class="ident">name</span>,
@@ -231,7 +231,7 @@
<span class="ident">path</span>: <span class="ident">web::Path</span><span class="op">&lt;</span><span class="ident">String</span><span class="op">&gt;</span>,
<span class="ident">data</span>: <span class="ident">AppData</span>,
<span class="ident">id</span>: <span class="ident">Identity</span>,
) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">PageResult</span><span class="op">&lt;</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">&gt;</span> {
) -&gt; <span class="ident">PageResult</span><span class="op">&lt;</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">path</span>.<span class="ident">into_inner</span>();

View File

@@ -103,7 +103,7 @@
}
<span class="kw">impl</span> <span class="ident">Routes</span> {
<span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Routes</span> {
<span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="ident">Routes</span> {
<span class="kw">let</span> <span class="ident">panel</span> <span class="op">=</span> <span class="ident">Panel::new</span>();
<span class="kw">let</span> <span class="ident">home</span> <span class="op">=</span> <span class="ident">panel</span>.<span class="ident">home</span>;
<span class="ident">Routes</span> {
@@ -120,7 +120,7 @@
}
}
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">get_sitemap</span>() <span class="op">-</span><span class="op">&gt;</span> [<span class="kw-2">&amp;</span><span class="lifetime">&#39;static</span> <span class="ident">str</span>; <span class="number">7</span>] {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">get_sitemap</span>() -&gt; [<span class="kw-2">&amp;</span><span class="lifetime">&#39;static</span> <span class="ident">str</span>; <span class="number">7</span>] {
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> <span class="ident">Auth::get_sitemap</span>();
<span class="kw">let</span> <span class="ident">p</span> <span class="op">=</span> <span class="ident">Panel::get_sitemap</span>();
[<span class="ident">a</span>[<span class="number">0</span>], <span class="ident">a</span>[<span class="number">1</span>], <span class="ident">p</span>[<span class="number">0</span>], <span class="ident">p</span>[<span class="number">1</span>], <span class="ident">p</span>[<span class="number">2</span>], <span class="ident">p</span>[<span class="number">3</span>], <span class="ident">p</span>[<span class="number">4</span>]]

View File

@@ -84,7 +84,7 @@
}
<span class="kw">impl</span> <span class="ident">Default</span> <span class="kw">for</span> <span class="ident">IndexPage</span> {
<span class="kw">fn</span> <span class="ident">default</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">default</span>() -&gt; <span class="self">Self</span> {
<span class="kw">let</span> <span class="ident">urls</span> <span class="op">=</span> <span class="ident">Routes::get_sitemap</span>();
<span class="kw">let</span> <span class="ident">domain</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident"><span class="kw">crate</span>::SETTINGS</span>.<span class="ident">server</span>.<span class="ident">domain</span>.<span class="ident">ends_with</span>(<span class="string">&#39;/&#39;</span>) {
<span class="kw-2">&amp;</span><span class="ident"><span class="kw">crate</span>::SETTINGS</span>.<span class="ident">server</span>.<span class="ident">domain</span>[<span class="number">0</span>..<span class="ident"><span class="kw">crate</span>::SETTINGS</span>.<span class="ident">server</span>.<span class="ident">domain</span>.<span class="ident">len</span>() <span class="op">-</span> <span class="number">1</span>]
@@ -101,7 +101,7 @@
}
<span class="attribute">#[<span class="ident">get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;PAGES.sitemap&quot;</span>)]</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">sitemap</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">sitemap</span>() -&gt; <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="ident">HttpResponse::Ok</span>()
.<span class="ident">content_type</span>(<span class="string">&quot;application/xml; charset=utf-8&quot;</span>)
.<span class="ident">body</span>(<span class="kw-2">&amp;</span><span class="kw-2">*</span><span class="ident">INDEX</span>)

View File

@@ -281,7 +281,7 @@
<span class="kw">impl</span> <span class="ident">Server</span> {
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_ip</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">String</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_ip</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="ident">String</span> {
<span class="macro">format!</span>(<span class="string">&quot;{}:{}&quot;</span>, <span class="self">self</span>.<span class="ident">ip</span>, <span class="self">self</span>.<span class="ident">port</span>)
}
}
@@ -298,7 +298,7 @@
<span class="kw">impl</span> <span class="ident">DatabaseBuilder</span> {
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">fn</span> <span class="ident">extract_database_url</span>(<span class="ident">url</span>: <span class="kw-2">&amp;</span><span class="ident">Url</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">extract_database_url</span>(<span class="ident">url</span>: <span class="kw-2">&amp;</span><span class="ident">Url</span>) -&gt; <span class="self">Self</span> {
<span class="macro">debug!</span>(<span class="string">&quot;Databse name: {}&quot;</span>, <span class="ident">url</span>.<span class="ident">path</span>());
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">path</span> <span class="op">=</span> <span class="ident">url</span>.<span class="ident">path</span>().<span class="ident">split</span>(<span class="string">&#39;/&#39;</span>);
<span class="ident">path</span>.<span class="ident">next</span>();
@@ -342,7 +342,7 @@
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">impl</span> <span class="ident">Settings</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Result</span><span class="op">&lt;</span><span class="self">Self</span>, <span class="ident">ConfigError</span><span class="op">&gt;</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="prelude-ty">Result</span><span class="op">&lt;</span><span class="self">Self</span>, <span class="ident">ConfigError</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">s</span> <span class="op">=</span> <span class="ident">Config::new</span>();
<span class="comment">// setting default values</span>
@@ -369,26 +369,26 @@
<span class="ident">check_url</span>(<span class="kw-2">&amp;</span><span class="ident">s</span>);
<span class="kw">match</span> <span class="ident">env::var</span>(<span class="string">&quot;PORT&quot;</span>) {
<span class="prelude-val">Ok</span>(<span class="ident">val</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="prelude-val">Ok</span>(<span class="ident">val</span>) =&gt; {
<span class="ident">s</span>.<span class="ident">set</span>(<span class="string">&quot;server.port&quot;</span>, <span class="ident">val</span>).<span class="ident">unwrap</span>();
}
<span class="prelude-val">Err</span>(<span class="ident">e</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="macro">warn!</span>(<span class="string">&quot;couldn&#39;t interpret PORT: {}&quot;</span>, <span class="ident">e</span>),
<span class="prelude-val">Err</span>(<span class="ident">e</span>) =&gt; <span class="macro">warn!</span>(<span class="string">&quot;couldn&#39;t interpret PORT: {}&quot;</span>, <span class="ident">e</span>),
}
<span class="kw">match</span> <span class="ident">env::var</span>(<span class="string">&quot;DATABASE_URL&quot;</span>) {
<span class="prelude-val">Ok</span>(<span class="ident">val</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="prelude-val">Ok</span>(<span class="ident">val</span>) =&gt; {
<span class="kw">let</span> <span class="ident">url</span> <span class="op">=</span> <span class="ident">Url::parse</span>(<span class="kw-2">&amp;</span><span class="ident">val</span>).<span class="ident">expect</span>(<span class="string">&quot;couldn&#39;t parse Database URL&quot;</span>);
<span class="kw">let</span> <span class="ident">database_conf</span> <span class="op">=</span> <span class="ident">DatabaseBuilder::extract_database_url</span>(<span class="kw-2">&amp;</span><span class="ident">url</span>);
<span class="ident">set_from_database_url</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">s</span>, <span class="kw-2">&amp;</span><span class="ident">database_conf</span>);
}
<span class="prelude-val">Err</span>(<span class="ident">e</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="macro">warn!</span>(<span class="string">&quot;couldn&#39;t interpret DATABASE_URL: {}&quot;</span>, <span class="ident">e</span>),
<span class="prelude-val">Err</span>(<span class="ident">e</span>) =&gt; <span class="macro">warn!</span>(<span class="string">&quot;couldn&#39;t interpret DATABASE_URL: {}&quot;</span>, <span class="ident">e</span>),
}
<span class="ident">set_database_url</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">s</span>);
<span class="kw">match</span> <span class="ident">s</span>.<span class="ident">try_into</span>() {
<span class="prelude-val">Ok</span>(<span class="ident">val</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">Ok</span>(<span class="ident">val</span>),
<span class="prelude-val">Err</span>(<span class="ident">e</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="prelude-val">Err</span>(<span class="ident">ConfigError::Message</span>(<span class="macro">format!</span>(<span class="string">&quot;\n\nError: {}. If it says missing fields, then please refer to https://github.com/mCaptcha/mcaptcha#configuration to learn more about how mcaptcha reads configuration\n\n&quot;</span>, <span class="ident">e</span>))),
<span class="prelude-val">Ok</span>(<span class="ident">val</span>) =&gt; <span class="prelude-val">Ok</span>(<span class="ident">val</span>),
<span class="prelude-val">Err</span>(<span class="ident">e</span>) =&gt; <span class="prelude-val">Err</span>(<span class="ident">ConfigError::Message</span>(<span class="macro">format!</span>(<span class="string">&quot;\n\nError: {}. If it says missing fields, then please refer to https://github.com/mCaptcha/mcaptcha#configuration to learn more about how mcaptcha reads configuration\n\n&quot;</span>, <span class="ident">e</span>))),
}
}
}

View File

@@ -68,12 +68,12 @@
<span class="kw">impl</span> <span class="ident">FileMap</span> {
<span class="attribute">#[<span class="ident">allow</span>(<span class="ident">clippy::new_without_default</span>)]</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="self">Self</span> {
<span class="kw">let</span> <span class="ident">map</span> <span class="op">=</span> <span class="macro">include_str!</span>(<span class="string">&quot;../cache_buster_data.json&quot;</span>);
<span class="kw">let</span> <span class="ident">files</span> <span class="op">=</span> <span class="ident">Files::new</span>(<span class="ident">map</span>);
<span class="self">Self</span> { <span class="ident">files</span> }
}
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>(<span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="self">self</span>, <span class="ident">path</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span><span class="op">&gt;</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>(<span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="self">self</span>, <span class="ident">path</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span>) -&gt; <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">str</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">file_path</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">files</span>.<span class="ident">get_full_path</span>(<span class="ident">path</span>);
<span class="ident">file_path</span>.<span class="ident">map</span>(<span class="op">|</span><span class="ident">file_path</span><span class="op">|</span> <span class="kw-2">&amp;</span><span class="ident">file_path</span>[<span class="number">1</span>..])
}

View File

@@ -283,12 +283,12 @@
<span class="attribute">#[<span class="ident">folder</span> <span class="op">=</span> <span class="string">&quot;assets/&quot;</span>]</span>
<span class="kw">struct</span> <span class="ident">Asset</span>;
<span class="kw">fn</span> <span class="ident">handle_assets</span>(<span class="ident">path</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">HttpResponse</span> {
<span class="kw">fn</span> <span class="ident">handle_assets</span>(<span class="ident">path</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>) -&gt; <span class="ident">HttpResponse</span> {
<span class="kw">match</span> <span class="ident">Asset::get</span>(<span class="ident">path</span>) {
<span class="prelude-val">Some</span>(<span class="ident">content</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="prelude-val">Some</span>(<span class="ident">content</span>) =&gt; {
<span class="kw">let</span> <span class="ident">body</span>: <span class="ident">Body</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">content</span>.<span class="ident">data</span> {
<span class="ident">Cow::Borrowed</span>(<span class="ident">bytes</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">bytes</span>.<span class="ident">into</span>(),
<span class="ident">Cow::Owned</span>(<span class="ident">bytes</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">bytes</span>.<span class="ident">into</span>(),
<span class="ident">Cow::Borrowed</span>(<span class="ident">bytes</span>) =&gt; <span class="ident">bytes</span>.<span class="ident">into</span>(),
<span class="ident">Cow::Owned</span>(<span class="ident">bytes</span>) =&gt; <span class="ident">bytes</span>.<span class="ident">into</span>(),
};
<span class="ident">HttpResponse::Ok</span>()
@@ -300,12 +300,12 @@
.<span class="ident">content_type</span>(<span class="ident">from_path</span>(<span class="ident">path</span>).<span class="ident">first_or_octet_stream</span>().<span class="ident">as_ref</span>())
.<span class="ident">body</span>(<span class="ident">body</span>)
}
<span class="prelude-val">None</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">HttpResponse::NotFound</span>().<span class="ident">body</span>(<span class="string">&quot;404 Not Found&quot;</span>),
<span class="prelude-val">None</span> =&gt; <span class="ident">HttpResponse::NotFound</span>().<span class="ident">body</span>(<span class="string">&quot;404 Not Found&quot;</span>),
}
}
<span class="attribute">#[<span class="ident">get</span>(<span class="string">&quot;/assets/{_:.*}&quot;</span>)]</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">static_files</span>(<span class="ident">path</span>: <span class="ident">web::Path</span><span class="op">&lt;</span><span class="ident">String</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">static_files</span>(<span class="ident">path</span>: <span class="ident">web::Path</span><span class="op">&lt;</span><span class="ident">String</span><span class="op">&gt;</span>) -&gt; <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="ident">handle_assets</span>(<span class="kw-2">&amp;</span><span class="ident">path</span>)
}
@@ -313,12 +313,12 @@
<span class="attribute">#[<span class="ident">folder</span> <span class="op">=</span> <span class="string">&quot;static/favicons/&quot;</span>]</span>
<span class="kw">struct</span> <span class="ident">Favicons</span>;
<span class="kw">fn</span> <span class="ident">handle_favicons</span>(<span class="ident">path</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">HttpResponse</span> {
<span class="kw">fn</span> <span class="ident">handle_favicons</span>(<span class="ident">path</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>) -&gt; <span class="ident">HttpResponse</span> {
<span class="kw">match</span> <span class="ident">Favicons::get</span>(<span class="ident">path</span>) {
<span class="prelude-val">Some</span>(<span class="ident">content</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="prelude-val">Some</span>(<span class="ident">content</span>) =&gt; {
<span class="kw">let</span> <span class="ident">body</span>: <span class="ident">Body</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">content</span>.<span class="ident">data</span> {
<span class="ident">Cow::Borrowed</span>(<span class="ident">bytes</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">bytes</span>.<span class="ident">into</span>(),
<span class="ident">Cow::Owned</span>(<span class="ident">bytes</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">bytes</span>.<span class="ident">into</span>(),
<span class="ident">Cow::Borrowed</span>(<span class="ident">bytes</span>) =&gt; <span class="ident">bytes</span>.<span class="ident">into</span>(),
<span class="ident">Cow::Owned</span>(<span class="ident">bytes</span>) =&gt; <span class="ident">bytes</span>.<span class="ident">into</span>(),
};
<span class="ident">HttpResponse::Ok</span>()
@@ -330,12 +330,12 @@
.<span class="ident">content_type</span>(<span class="ident">from_path</span>(<span class="ident">path</span>).<span class="ident">first_or_octet_stream</span>().<span class="ident">as_ref</span>())
.<span class="ident">body</span>(<span class="ident">body</span>)
}
<span class="prelude-val">None</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">HttpResponse::NotFound</span>().<span class="ident">body</span>(<span class="string">&quot;404 Not Found&quot;</span>),
<span class="prelude-val">None</span> =&gt; <span class="ident">HttpResponse::NotFound</span>().<span class="ident">body</span>(<span class="string">&quot;404 Not Found&quot;</span>),
}
}
<span class="attribute">#[<span class="ident">get</span>(<span class="string">&quot;/{file}&quot;</span>)]</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">favicons</span>(<span class="ident">path</span>: <span class="ident">web::Path</span><span class="op">&lt;</span><span class="ident">String</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">favicons</span>(<span class="ident">path</span>: <span class="ident">web::Path</span><span class="op">&lt;</span><span class="ident">String</span><span class="op">&gt;</span>) -&gt; <span class="kw">impl</span> <span class="ident">Responder</span> {
<span class="macro">debug!</span>(<span class="string">&quot;searching favicons&quot;</span>);
<span class="ident">handle_favicons</span>(<span class="kw-2">&amp;</span><span class="ident">path</span>)
}

View File

@@ -259,7 +259,7 @@
}
<span class="kw">impl</span> <span class="ident">Stats</span> {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">user</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>, <span class="ident">key</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>, <span class="ident">db</span>: <span class="kw-2">&amp;</span><span class="ident">PgPool</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="self">Self</span><span class="op">&gt;</span> {
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">user</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>, <span class="ident">key</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>, <span class="ident">db</span>: <span class="kw-2">&amp;</span><span class="ident">PgPool</span>) -&gt; <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="self">Self</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">config_fetches_fut</span> <span class="op">=</span> <span class="ident">runners::fetch_config_fetched</span>(<span class="ident">user</span>, <span class="ident">key</span>, <span class="ident">db</span>);
<span class="kw">let</span> <span class="ident">solves_fut</span> <span class="op">=</span> <span class="ident">runners::fetch_solve</span>(<span class="ident">user</span>, <span class="ident">key</span>, <span class="ident">db</span>);
<span class="kw">let</span> <span class="ident">confirms_fut</span> <span class="op">=</span> <span class="ident">runners::fetch_confirm</span>(<span class="ident">user</span>, <span class="ident">key</span>, <span class="ident">db</span>);
@@ -278,7 +278,7 @@
}
<span class="kw">impl</span> <span class="ident">StatsUnixTimestamp</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">from_stats</span>(<span class="ident">stats</span>: <span class="kw-2">&amp;</span><span class="ident">Stats</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">from_stats</span>(<span class="ident">stats</span>: <span class="kw-2">&amp;</span><span class="ident">Stats</span>) -&gt; <span class="self">Self</span> {
<span class="kw">let</span> <span class="ident">config_fetches</span> <span class="op">=</span> <span class="ident"><span class="self">Self</span>::unix_timestamp</span>(<span class="kw-2">&amp;</span><span class="ident">stats</span>.<span class="ident">config_fetches</span>);
<span class="kw">let</span> <span class="ident">solves</span> <span class="op">=</span> <span class="ident"><span class="self">Self</span>::unix_timestamp</span>(<span class="kw-2">&amp;</span><span class="ident">stats</span>.<span class="ident">solves</span>);
<span class="kw">let</span> <span class="ident">confirms</span> <span class="op">=</span> <span class="ident"><span class="self">Self</span>::unix_timestamp</span>(<span class="kw-2">&amp;</span><span class="ident">stats</span>.<span class="ident">confirms</span>);
@@ -291,7 +291,7 @@
<span class="doccomment">/// featch PoWConfig confirms</span>
<span class="attribute">#[<span class="ident">inline</span>]</span>
<span class="kw">fn</span> <span class="ident">unix_timestamp</span>(<span class="ident">dates</span>: <span class="kw-2">&amp;</span>[<span class="ident">Date</span>]) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">i64</span><span class="op">&gt;</span> {
<span class="kw">fn</span> <span class="ident">unix_timestamp</span>(<span class="ident">dates</span>: <span class="kw-2">&amp;</span>[<span class="ident">Date</span>]) -&gt; <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">i64</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">res</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">i64</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">Vec::with_capacity</span>(<span class="ident">dates</span>.<span class="ident">len</span>());
<span class="ident">dates</span>
@@ -310,7 +310,7 @@
<span class="ident">user</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>,
<span class="ident">key</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>,
<span class="ident">db</span>: <span class="kw-2">&amp;</span><span class="ident">PgPool</span>,
) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Date</span><span class="op">&gt;</span><span class="op">&gt;</span> {
) -&gt; <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Date</span><span class="op">&gt;</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">records</span> <span class="op">=</span> <span class="macro">sqlx::query_as!</span>(
<span class="ident">Date</span>,
<span class="string">&quot;SELECT time FROM mcaptcha_pow_fetched_stats
@@ -340,7 +340,7 @@
<span class="ident">user</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>,
<span class="ident">key</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>,
<span class="ident">db</span>: <span class="kw-2">&amp;</span><span class="ident">PgPool</span>,
) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Date</span><span class="op">&gt;</span><span class="op">&gt;</span> {
) -&gt; <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Date</span><span class="op">&gt;</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">records</span> <span class="op">=</span> <span class="macro">sqlx::query_as!</span>(
<span class="ident">Date</span>,
<span class="string">&quot;SELECT time FROM mcaptcha_pow_solved_stats
@@ -368,7 +368,7 @@
<span class="ident">user</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>,
<span class="ident">key</span>: <span class="kw-2">&amp;</span><span class="ident">str</span>,
<span class="ident">db</span>: <span class="kw-2">&amp;</span><span class="ident">PgPool</span>,
) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Date</span><span class="op">&gt;</span><span class="op">&gt;</span> {
) -&gt; <span class="ident">ServiceResult</span><span class="op">&lt;</span><span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Date</span><span class="op">&gt;</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">records</span> <span class="op">=</span> <span class="macro">sqlx::query_as!</span>(
<span class="ident">Date</span>,
<span class="string">&quot;SELECT time FROM mcaptcha_pow_confirmed_stats

View File

@@ -110,7 +110,7 @@
}
<span class="kw">impl</span> <span class="ident">Widget</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="self">Self</span> {
<span class="ident">Widget</span> {
<span class="ident">verification_widget</span>: <span class="string">&quot;/widget&quot;</span>,
}
@@ -125,7 +125,7 @@
<span class="kw">const</span> <span class="ident">PAGE</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;mCaptcha CAPTCHA verification&quot;</span>;
<span class="kw">impl</span> <span class="ident">IndexPage</span> {
<span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">fn</span> <span class="ident">new</span>() -&gt; <span class="self">Self</span> {
<span class="ident">IndexPage</span> {}
}
}
@@ -136,7 +136,7 @@
<span class="doccomment">/// render a client side widget for CAPTCHA verification</span>
<span class="attribute">#[<span class="ident">my_codegen::get</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;crate::WIDGET_ROUTES.verification_widget&quot;</span>)]</span> <span class="comment">//, wrap = &quot;crate::CheckLogin&quot;)]</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">show_widget</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">PageResult</span><span class="op">&lt;</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">&gt;</span> {
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">show_widget</span>() -&gt; <span class="ident">PageResult</span><span class="op">&lt;</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">&gt;</span> {
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse::Ok</span>()
.<span class="ident">content_type</span>(<span class="string">&quot;text/html; charset=utf-8&quot;</span>)
.<span class="ident">body</span>(<span class="kw-2">&amp;</span><span class="kw-2">*</span><span class="ident">INDEX_PAGE</span>))