Deploying to gh-pages from @ 5c4435430f 🚀

This commit is contained in:
realaravinth
2021-03-10 16:09:41 +00:00
parent b1860459e0
commit 31c558a9bb
84 changed files with 3467 additions and 145 deletions

View File

@@ -140,8 +140,24 @@
<span id="137">137</span>
<span id="138">138</span>
<span id="139">139</span>
<span id="140">140</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">io</span>::{<span class="ident">Error</span> <span class="kw">as</span> <span class="ident">IOError</span>, <span class="ident">ErrorKind</span> <span class="kw">as</span> <span class="ident">IOErrorKind</span>};
<span class="comment">/*
* Copyright (C) 2021 Aravinth Manivannan &lt;realaravinth@batsense.net&gt;
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;.
*/</span>
<span class="kw">use</span> <span class="ident">actix_web</span>::{
<span class="ident">dev</span>::<span class="ident">HttpResponseBuilder</span>,
@@ -154,7 +170,7 @@
<span class="kw">use</span> <span class="ident">derive_more</span>::{<span class="ident">Display</span>, <span class="ident">Error</span>};
<span class="kw">use</span> <span class="ident">log</span>::<span class="ident">debug</span>;
<span class="kw">use</span> <span class="ident">serde</span>::<span class="ident">Serialize</span>;
<span class="kw">use</span> <span class="ident">serde</span>::{<span class="ident">Deserialize</span>, <span class="ident">Serialize</span>};
<span class="comment">// use validator::ValidationErrors;</span>
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">convert</span>::<span class="ident">From</span>;
@@ -166,14 +182,11 @@
<span class="ident">InternalServerError</span>,
<span class="attribute">#[<span class="ident">display</span>(<span class="ident">fmt</span> <span class="op">=</span> <span class="string">&quot;The value you entered for email is not an email&quot;</span>)]</span> <span class="comment">//405j</span>
<span class="ident">NotAnEmail</span>,
<span class="attribute">#[<span class="ident">display</span>(<span class="ident">fmt</span> <span class="op">=</span> <span class="string">&quot;File not found&quot;</span>)]</span>
<span class="ident">FileNotFound</span>,
<span class="attribute">#[<span class="ident">display</span>(<span class="ident">fmt</span> <span class="op">=</span> <span class="string">&quot;File exists&quot;</span>)]</span>
<span class="ident">FileExists</span>,
<span class="attribute">#[<span class="ident">display</span>(<span class="ident">fmt</span> <span class="op">=</span> <span class="string">&quot;Permission denied&quot;</span>)]</span>
<span class="ident">PermissionDenied</span>,
<span class="attribute">#[<span class="ident">display</span>(<span class="ident">fmt</span> <span class="op">=</span> <span class="string">&quot;Invalid credentials&quot;</span>)]</span>
<span class="ident">InvalidCredentials</span>,
<span class="attribute">#[<span class="ident">display</span>(<span class="ident">fmt</span> <span class="op">=</span> <span class="string">&quot;Wrong password&quot;</span>)]</span>
<span class="ident">WrongPassword</span>,
<span class="attribute">#[<span class="ident">display</span>(<span class="ident">fmt</span> <span class="op">=</span> <span class="string">&quot;Username not found&quot;</span>)]</span>
<span class="ident">UsernameNotFound</span>,
<span class="attribute">#[<span class="ident">display</span>(<span class="ident">fmt</span> <span class="op">=</span> <span class="string">&quot;Authorization required&quot;</span>)]</span>
<span class="ident">AuthorizationRequired</span>,
@@ -194,15 +207,16 @@
<span class="doccomment">/// when the value passed contains profainity</span>
<span class="attribute">#[<span class="ident">display</span>(<span class="ident">fmt</span> <span class="op">=</span> <span class="string">&quot;Username not available&quot;</span>)]</span>
<span class="ident">UsernameTaken</span>,
<span class="doccomment">/// when a question is already answered</span>
<span class="attribute">#[<span class="ident">display</span>(<span class="ident">fmt</span> <span class="op">=</span> <span class="string">&quot;Already answered&quot;</span>)]</span>
<span class="ident">AlreadyAnswered</span>,
<span class="attribute">#[<span class="ident">display</span>(<span class="ident">fmt</span> <span class="op">=</span> <span class="string">&quot;Passsword too short&quot;</span>)]</span>
<span class="ident">PasswordTooShort</span>,
<span class="attribute">#[<span class="ident">display</span>(<span class="ident">fmt</span> <span class="op">=</span> <span class="string">&quot;Username too long&quot;</span>)]</span>
<span class="ident">PasswordTooLong</span>,
}
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Serialize</span>)]</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Serialize</span>, <span class="ident">Deserialize</span>)]</span>
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="kw">struct</span> <span class="ident">ErrorToResponse</span> {
<span class="ident">error</span>: <span class="ident">String</span>,
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">ErrorToResponse</span> {
<span class="kw">pub</span> <span class="ident">error</span>: <span class="ident">String</span>,
}
<span class="kw">impl</span> <span class="ident">ResponseError</span> <span class="kw">for</span> <span class="ident">ServiceError</span> {
@@ -218,28 +232,15 @@
<span class="kw">match</span> <span class="kw-2">*</span><span class="self">self</span> {
<span class="ident">ServiceError</span>::<span class="ident">InternalServerError</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode</span>::<span class="ident">INTERNAL_SERVER_ERROR</span>,
<span class="ident">ServiceError</span>::<span class="ident">NotAnEmail</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode</span>::<span class="ident">BAD_REQUEST</span>,
<span class="ident">ServiceError</span>::<span class="ident">FileNotFound</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode</span>::<span class="ident">NOT_FOUND</span>,
<span class="ident">ServiceError</span>::<span class="ident">FileExists</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode</span>::<span class="ident">METHOD_NOT_ALLOWED</span>,
<span class="ident">ServiceError</span>::<span class="ident">PermissionDenied</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode</span>::<span class="ident">UNAUTHORIZED</span>,
<span class="ident">ServiceError</span>::<span class="ident">InvalidCredentials</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode</span>::<span class="ident">UNAUTHORIZED</span>,
<span class="ident">ServiceError</span>::<span class="ident">WrongPassword</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode</span>::<span class="ident">UNAUTHORIZED</span>,
<span class="ident">ServiceError</span>::<span class="ident">UsernameNotFound</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode</span>::<span class="ident">UNAUTHORIZED</span>,
<span class="ident">ServiceError</span>::<span class="ident">AuthorizationRequired</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode</span>::<span class="ident">UNAUTHORIZED</span>,
<span class="ident">ServiceError</span>::<span class="ident">ProfainityError</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode</span>::<span class="ident">BAD_REQUEST</span>,
<span class="ident">ServiceError</span>::<span class="ident">BlacklistError</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode</span>::<span class="ident">BAD_REQUEST</span>,
<span class="ident">ServiceError</span>::<span class="ident">PasswordTooShort</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode</span>::<span class="ident">BAD_REQUEST</span>,
<span class="ident">ServiceError</span>::<span class="ident">PasswordTooLong</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode</span>::<span class="ident">BAD_REQUEST</span>,
<span class="ident">ServiceError</span>::<span class="ident">UsernameCaseMappedError</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode</span>::<span class="ident">BAD_REQUEST</span>,
<span class="ident">ServiceError</span>::<span class="ident">UsernameTaken</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode</span>::<span class="ident">BAD_REQUEST</span>,
<span class="ident">ServiceError</span>::<span class="ident">AlreadyAnswered</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">StatusCode</span>::<span class="ident">BAD_REQUEST</span>,
}
}
}
<span class="kw">impl</span> <span class="ident">From</span><span class="op">&lt;</span><span class="ident">IOError</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">IOError</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">ServiceError</span> {
<span class="macro">debug</span><span class="macro">!</span>(<span class="string">&quot;{:?}&quot;</span>, <span class="kw-2">&amp;</span><span class="ident">e</span>);
<span class="kw">match</span> <span class="ident">e</span>.<span class="ident">kind</span>() {
<span class="ident">IOErrorKind</span>::<span class="ident">NotFound</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">ServiceError</span>::<span class="ident">FileNotFound</span>,
<span class="ident">IOErrorKind</span>::<span class="ident">PermissionDenied</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">ServiceError</span>::<span class="ident">PermissionDenied</span>,
<span class="ident">IOErrorKind</span>::<span class="ident">AlreadyExists</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">ServiceError</span>::<span class="ident">FileExists</span>,
<span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">ServiceError</span>::<span class="ident">InternalServerError</span>,
}
}
}
@@ -253,7 +254,8 @@
<span class="ident">CredsError</span>::<span class="ident">BlacklistError</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">ServiceError</span>::<span class="ident">BlacklistError</span>,
<span class="ident">CredsError</span>::<span class="ident">NotAnEmail</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">ServiceError</span>::<span class="ident">NotAnEmail</span>,
<span class="ident">CredsError</span>::<span class="ident">Argon2Error</span>(<span class="kw">_</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">ServiceError</span>::<span class="ident">InternalServerError</span>,
<span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">ServiceError</span>::<span class="ident">InternalServerError</span>,
<span class="ident">CredsError</span>::<span class="ident">PasswordTooLong</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">ServiceError</span>::<span class="ident">PasswordTooLong</span>,
<span class="ident">CredsError</span>::<span class="ident">PasswordTooShort</span> <span class="op">=</span><span class="op">&gt;</span> <span class="ident">ServiceError</span>::<span class="ident">PasswordTooShort</span>,
}
}
}