Backport to Rocket v0.4, fix all warnings & errors

pull/5/head
Charlotte Som 2021-07-18 01:32:57 +01:00
parent 57b97ffe94
commit d7f0747090
7 changed files with 229 additions and 1104 deletions

1261
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -7,17 +7,12 @@ edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
rocket = "0.5.0-rc.1"
serde = "1.0.126"
rocket = "0.4.10"
serde = { version = "1.0.126", features = ["derive"] }
serde_json = "1.0"
sha1 = "0.6.0"
uuid = { version = "0.8.1", features = ["serde", "v4"] }
log = "0.4.0"
env_logger = "0.8.4"
chrono = { version = "0.4.11", features = ["serde"] }
serde_derive = "1.0"
[dependencies.rocket_contrib]
version = "0.4.10"
default-features = false
features = ["json"]
rocket_contrib = { version = "0.4.10", default-features = false, features = ["json"] }

View File

@ -2,7 +2,7 @@ extern crate log;
use crate::user::User;
use crate::file_io::{read_json, append_json, write_json};
extern crate sha1;
use serde_json::Result;
#[get("/")]
pub fn index() -> &'static str {
@ -23,7 +23,7 @@ pub fn index() -> &'static str {
// Post request to register a user and pin
#[post("/api/register/<name>/<pin>/<pronouns>")]
pub fn register_user(name: &str, pin: i32, pronouns: &str) -> String {
pub fn register_user(name: String, pin: i32, pronouns: String) -> String {
let mut users: Vec<User> = read_json(); // Create an array of users out of parsed json
for i in &users { // loop through elements of the vector
if i.name == name.to_lowercase() {
@ -38,7 +38,7 @@ pub fn register_user(name: &str, pin: i32, pronouns: &str) -> String {
name: name.to_string().to_lowercase(),
pin_hashed: pin_hashed,
pronouns: pronouns.to_string().to_lowercase(),
sessionToken: "NULL".to_string()
session_token: "NULL".to_string()
}); // append the user to the vec
// append to the json file
@ -53,7 +53,7 @@ pub fn register_user(name: &str, pin: i32, pronouns: &str) -> String {
// Check if pin matches user
#[get("/api/users/<name>/<pin>")]
pub fn check_pin(name: &str, pin: i32) -> String {
pub fn check_pin(name: String, pin: i32) -> String {
let users: Vec<User> = read_json();
let hashed_pin_input = sha1::Sha1::from(&pin.to_string()).digest().to_string();
for i in &users { // loop through the vector
@ -73,7 +73,7 @@ pub fn check_pin(name: &str, pin: i32) -> String {
// Change a users pin/name
#[post("/api/users/change/<name>/<pin>/<new_name>/<new_pin>")]
pub fn change(name: &str, pin: i32, new_name: &str, new_pin: i32) -> String {
pub fn change(name: String, pin: i32, new_name: String, new_pin: i32) -> String {
let mut users: Vec<User> = read_json();
let hashed_pin_input = sha1::Sha1::from(&pin.to_string()).digest().to_string();
@ -121,7 +121,7 @@ pub fn change(name: &str, pin: i32, new_name: &str, new_pin: i32) -> String {
}
#[get("/api/users/<name>")]
pub fn get_user(name: &str) -> String {
pub fn get_user(name: String) -> String {
let users: Vec<User> = read_json();
let found_user = users.iter().filter(|u| u.name == name.to_lowercase()).next();
@ -133,7 +133,7 @@ pub fn get_user(name: &str) -> String {
/* Get data about a user */
#[get("/api/about/name/<name>")]
pub fn get_user_name(name: &str) -> String {
pub fn get_user_name(name: String) -> String {
let users: Vec<User> = read_json();
let found_user = users.iter().filter(|u| u.name == name.to_lowercase()).next();
@ -144,7 +144,7 @@ pub fn get_user_name(name: &str) -> String {
}
#[get("/api/about/pronouns/<name>")]
pub fn get_user_pronouns(name: &str) -> String {
pub fn get_user_pronouns(name: String) -> String {
let users: Vec<User> = read_json();
let found_user = users.iter().filter(|u| u.name == name.to_lowercase()).next();

View File

@ -1,7 +1,7 @@
/* Contains Rocket code for chat/message functionality */
extern crate log;
use crate::message::Message;
use rocket::serde::json::{Json, JsonValue};
use rocket_contrib::json::{Json, JsonValue};
#[post("/api/message/send", format = "json", data = "<message>")]
pub fn send_message(message: Json<Message<'_>>) -> JsonValue {

View File

@ -1,30 +1,42 @@
#[macro_use] extern crate log;
#[macro_use] extern crate rocket;
#[macro_use] extern crate rocket_contrib;
#![feature(proc_macro_hygiene, decl_macro)]
#[macro_use]
extern crate log;
#[macro_use]
extern crate rocket;
#[macro_use]
extern crate rocket_contrib;
use rocket::fairing::AdHoc;
mod auth;
mod user;
mod message;
mod file_io;
mod chat;
mod file_io;
mod message;
mod user;
#[launch]
fn rocket() -> _ {
fn main() {
env_logger::init();
info!("Started up rocket");
let cors_fairing = AdHoc::on_response("CORS", |_, res| {
Box::pin(async move {
res.set_raw_header("Access-Control-Allow-Origin", "*");
})
res.set_raw_header("Access-Control-Allow-Origin", "*");
});
info!("Built CORS fairing");
rocket::build()
rocket::ignite()
.mount(
"/",
routes![auth::index, auth::get_user, auth::register_user, auth::check_pin, auth::change, auth::get_user_name, auth::get_user_pronouns, chat::send_message],
routes![
auth::index,
auth::get_user,
auth::register_user,
auth::check_pin,
auth::change,
auth::get_user_name,
auth::get_user_pronouns,
chat::send_message
],
)
.attach(cors_fairing)
.launch();
}

View File

@ -1,7 +1,7 @@
use uuid::Uuid;
use chrono::prelude::*;
use crate::user::User;
use rocket::serde::{Deserialize, Serialize};
use serde::{Deserialize, Serialize};
#[derive(Deserialize, Serialize)]
pub struct Message<'r> {

View File

@ -6,5 +6,6 @@ pub struct User {
pub name: String,
pub pin_hashed: String,
pub pronouns: String,
pub sessionToken: String,
#[serde(rename = "sessionToken")]
pub session_token: String,
}