Skip to content

Commit 84eae27

Browse files
committed
general code cleanup
1 parent 0560eaf commit 84eae27

File tree

7 files changed

+125
-174
lines changed

7 files changed

+125
-174
lines changed

src/admin.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,7 @@ impl<'r> FromRequest<'r> for Admin {
1818
type Error = AdminError;
1919

2020
async fn from_request(req: &'r Request<'_>) -> request::Outcome<Self, Self::Error> {
21-
let mut is_admin = req.headers().get("X-Forwarded-Preferred-Username");
22-
let username_option = is_admin.next();
23-
24-
let username = match username_option {
21+
let username = match req.headers().get("X-Forwarded-Preferred-Username").next() {
2522
Some(username) => username,
2623
None => return request::Outcome::Error((Status::BadRequest, AdminError::Missing)),
2724
};

src/connections.rs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ impl ConnectionHistory {
5555
}
5656

5757
Self {
58-
triplets: triplets,
58+
triplets,
5959
all_cids: unique_cids,
6060
all_ckeys: unique_ckeys,
6161
all_ips: unique_ips,
@@ -67,16 +67,16 @@ impl ConnectionHistory {
6767
pub async fn ip(mut db: Connection<Cmdb>, ip: String) -> Json<ConnectionHistory> {
6868
let parts: Vec<&str> = ip.split('.').collect();
6969

70-
let query_result: Result<Vec<LoginTriplet>, sqlx::Error> =
71-
query_as("SELECT * FROM login_triplets WHERE ip1 = ? AND ip2 = ? AND ip3 = ? AND ip4 = ?")
72-
.bind(parts[0])
73-
.bind(parts[1])
74-
.bind(parts[2])
75-
.bind(parts[3])
76-
.fetch_all(&mut **db)
77-
.await;
78-
79-
let query = match query_result {
70+
let query = match query_as(
71+
"SELECT * FROM login_triplets WHERE ip1 = ? AND ip2 = ? AND ip3 = ? AND ip4 = ?",
72+
)
73+
.bind(parts[0])
74+
.bind(parts[1])
75+
.bind(parts[2])
76+
.bind(parts[3])
77+
.fetch_all(&mut **db)
78+
.await
79+
{
8080
Ok(query) => query,
8181
Err(_) => return Json(ConnectionHistory::default()),
8282
};
@@ -115,12 +115,12 @@ async fn get_triplets_by_ckey(db: &mut MySqlConnection, ckey: String) -> Option<
115115

116116
#[get("/Ckey?<ckey>")]
117117
pub async fn ckey(mut db: Connection<Cmdb>, ckey: String) -> Json<ConnectionHistory> {
118-
let query = match get_triplets_by_ckey(&mut **db, ckey).await {
119-
Some(query) => query,
120-
None => return Json(ConnectionHistory::default()),
121-
};
122-
123-
Json(ConnectionHistory::annotate(query))
118+
Json(ConnectionHistory::annotate(
119+
match get_triplets_by_ckey(&mut **db, ckey).await {
120+
Some(query) => query,
121+
None => return Json(ConnectionHistory::default()),
122+
},
123+
))
124124
}
125125

126126
#[get("/FullByAllCid?<ckey>")]

src/logging.rs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,9 @@ pub async fn log_external(
5656
username: "[cmdb]".to_string(),
5757
};
5858

59-
let body = serde_json::to_string(&json)?;
60-
61-
let webhook = &logging_config.webhook;
62-
63-
let client = reqwest::Client::new();
64-
65-
let _ = client
66-
.post(webhook)
67-
.body(body)
59+
let _ = reqwest::Client::new()
60+
.post(&logging_config.webhook)
61+
.body(serde_json::to_string(&json)?)
6862
.header("Content-Type", "application/json")
6963
.send()
7064
.await?;

src/main.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#![forbid(unsafe_code)]
22

33
use rocket::fairing::{Fairing, Info, Kind};
4+
use rocket::figment::value::Value;
45
use rocket::http::Header;
56
use rocket::{
67
fairing::AdHoc,
@@ -84,10 +85,13 @@ fn rocket() -> _ {
8485
.merge(Toml::file("Rocket.toml").nested())
8586
.merge(Toml::file("Api.toml"));
8687

87-
let mut base_url = "/api";
88-
if cfg!(debug_assertions) {
89-
base_url = "";
90-
}
88+
let base_url: String = match figment.find_value("host.base_url") {
89+
Ok(value) => match value {
90+
Value::String(_, val) => val,
91+
_ => panic!("base_url must be a string."),
92+
},
93+
Err(_) => "/".to_string(),
94+
};
9195

9296
rocket::custom(figment)
9397
.manage(byond::ByondTopic::default())

src/player.rs

Lines changed: 47 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,11 @@ pub struct Note {
100100
}
101101

102102
async fn get_player_notes(db: &mut MySqlConnection, id: i64) -> Option<Vec<Note>> {
103-
let user_notes_result: Result<Vec<Note>, sqlx::Error> =
104-
query_as("SELECT * FROM player_notes WHERE player_id = ?")
105-
.bind(id)
106-
.fetch_all(&mut *db)
107-
.await;
108-
109-
let mut user_notes = match user_notes_result {
103+
let mut user_notes: Vec<Note> = match query_as("SELECT * FROM player_notes WHERE player_id = ?")
104+
.bind(id)
105+
.fetch_all(&mut *db)
106+
.await
107+
{
110108
Ok(notes) => notes,
111109
Err(err) => panic!("{}", err),
112110
};
@@ -121,13 +119,11 @@ async fn get_player_notes(db: &mut MySqlConnection, id: i64) -> Option<Vec<Note>
121119

122120
#[get("/<id>/AppliedNotes")]
123121
pub async fn applied_notes(mut db: Connection<Cmdb>, id: i64) -> Json<Vec<Note>> {
124-
let user_notes_result: Result<Vec<Note>, sqlx::Error> =
125-
query_as("SELECT * FROM player_notes WHERE admin_id = ?")
126-
.bind(id)
127-
.fetch_all(&mut **db)
128-
.await;
129-
130-
let mut user_notes = match user_notes_result {
122+
let mut user_notes: Vec<Note> = match query_as("SELECT * FROM player_notes WHERE admin_id = ?")
123+
.bind(id)
124+
.fetch_all(&mut **db)
125+
.await
126+
{
131127
Ok(notes) => notes,
132128
Err(_) => return Json(Vec::new()),
133129
};
@@ -154,25 +150,22 @@ pub struct JobBan {
154150
}
155151

156152
async fn get_player_jobbans(db: &mut MySqlConnection, id: i64) -> Option<Vec<JobBan>> {
157-
let user_jobbans_result: Result<Vec<JobBan>, sqlx::Error> =
158-
query_as("SELECT * FROM player_job_bans WHERE player_id = ?")
159-
.bind(id)
160-
.fetch_all(db)
161-
.await;
162-
163-
match user_jobbans_result {
153+
match query_as("SELECT * FROM player_job_bans WHERE player_id = ?")
154+
.bind(id)
155+
.fetch_all(db)
156+
.await
157+
{
164158
Ok(jobbans) => Some(jobbans),
165159
Err(_) => None,
166160
}
167161
}
168162

169163
async fn get_discord_id_from_player_id(db: &mut MySqlConnection, id: i64) -> Option<String> {
170-
let discord_search = query("SELECT discord_id FROM discord_links WHERE player_id = ?")
164+
match query("SELECT discord_id FROM discord_links WHERE player_id = ?")
171165
.bind(id)
172166
.fetch_one(db)
173-
.await;
174-
175-
match discord_search {
167+
.await
168+
{
176169
Ok(search) => Some(search.get("discord_id")),
177170
Err(_) => None,
178171
}
@@ -187,20 +180,16 @@ pub async fn index(
187180
let user_result: Result<Player, sqlx::Error>;
188181

189182
if ckey.is_some() {
190-
let unwrapped_ckey = ckey.unwrap();
191183
user_result = query_as("SELECT * FROM players WHERE ckey = ?")
192-
.bind(unwrapped_ckey)
184+
.bind(ckey.unwrap())
193185
.fetch_one(&mut **db)
194186
.await;
195187
} else if discord_id.is_some() {
196-
let unwrapped_discord_id = discord_id.unwrap();
197-
198-
let discord_search = query("SELECT player_id FROM discord_links WHERE discord_id = ?")
199-
.bind(unwrapped_discord_id)
188+
let player_id: i64 = match query("SELECT player_id FROM discord_links WHERE discord_id = ?")
189+
.bind(discord_id.unwrap())
200190
.fetch_one(&mut **db)
201-
.await;
202-
203-
let player_id: i64 = match discord_search {
191+
.await
192+
{
204193
Ok(search) => search.get("player_id"),
205194
Err(_) => return None,
206195
};
@@ -223,12 +212,11 @@ pub async fn index(
223212

224213
#[get("/<id>")]
225214
pub async fn id(mut db: Connection<Cmdb>, id: i32) -> Option<Json<Player>> {
226-
let user_result = query_as("SELECT * FROM players WHERE id = ?")
215+
let user: Player = match query_as("SELECT * FROM players WHERE id = ?")
227216
.bind(id)
228217
.fetch_one(&mut **db)
229-
.await;
230-
231-
let user: Player = match user_result {
218+
.await
219+
{
232220
Ok(user) => user,
233221
Err(error) => panic!("Error retrieving data: {error:?}"),
234222
};
@@ -251,24 +239,18 @@ pub async fn new_note(
251239
input: Form<NewNote>,
252240
config: &State<Config>,
253241
) -> Status {
254-
let executor = &mut **db;
255-
256-
let admin_id_option = get_player_id(executor, &admin.username).await;
257-
258-
let admin_id = match admin_id_option {
242+
let admin_id = match get_player_id(&mut **db, &admin.username).await {
259243
Some(admin_id) => admin_id,
260244
None => return Status::Unauthorized,
261245
};
262246

263-
let ckey_option = get_player_ckey(executor, id).await;
264-
265-
let ckey = match ckey_option {
247+
let ckey = match get_player_ckey(&mut **db, id).await {
266248
Some(ckey) => ckey,
267249
None => return Status::BadRequest,
268250
};
269251

270252
match create_note(
271-
executor,
253+
&mut **db,
272254
id,
273255
admin_id,
274256
&input.message,
@@ -301,35 +283,29 @@ pub async fn create_note(
301283
confidential: bool,
302284
category: i32,
303285
) -> bool {
304-
let now = chrono::Utc::now();
305-
let date = format!("{}", now.format("%Y-%m-%d %H:%M:%S"));
306-
307-
let executed = query("
308-
INSERT INTO player_notes (player_id, admin_id, text, date, is_ban, is_confidential, admin_rank, note_category)
309-
VALUES (?, ?, ?, ?, ?, ?, ?, ?)")
310-
.bind(id)
311-
.bind(admin_id)
312-
.bind(message)
313-
.bind(date)
314-
.bind(0)
315-
.bind(if confidential {1} else {0})
316-
.bind("[cmdb]".to_string())
317-
.bind(category)
318-
.execute(db).await;
319-
320-
match executed {
286+
match query("
287+
INSERT INTO player_notes (player_id, admin_id, text, date, is_ban, is_confidential, admin_rank, note_category)
288+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)")
289+
.bind(id)
290+
.bind(admin_id)
291+
.bind(message)
292+
.bind(chrono::Utc::now().format("%Y-%m-%d %H:%M:%S").to_string())
293+
.bind(0)
294+
.bind(if confidential {1} else {0})
295+
.bind("[cmdb]".to_string())
296+
.bind(category)
297+
.execute(db).await {
321298
Ok(query) => query.rows_affected() > 0,
322299
Err(_) => false,
323300
}
324301
}
325302

326303
pub async fn get_player_id(db: &mut MySqlConnection, ckey: &String) -> Option<i64> {
327-
let player_search = query("SELECT id FROM players WHERE ckey = ?")
304+
let player_id: i64 = match query("SELECT id FROM players WHERE ckey = ?")
328305
.bind(ckey)
329306
.fetch_one(db)
330-
.await;
331-
332-
let player_id: i64 = match player_search {
307+
.await
308+
{
333309
Ok(search) => search.get("id"),
334310
Err(_) => return None,
335311
};
@@ -338,12 +314,11 @@ pub async fn get_player_id(db: &mut MySqlConnection, ckey: &String) -> Option<i6
338314
}
339315

340316
pub async fn get_player_ckey(db: &mut MySqlConnection, id: i64) -> Option<String> {
341-
let player_search = query("SELECT ckey FROM players WHERE id = ?")
317+
let player_ckey: String = match query("SELECT ckey FROM players WHERE id = ?")
342318
.bind(id)
343319
.fetch_one(db)
344-
.await;
345-
346-
let player_ckey: String = match player_search {
320+
.await
321+
{
347322
Ok(search) => search.get("ckey"),
348323
Err(_) => return None,
349324
};

0 commit comments

Comments
 (0)