added api routes for creation of new users
This commit is contained in:
parent
b7e85e8c69
commit
c0247e9e98
28
Rocket.toml
Normal file
28
Rocket.toml
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
[default]
|
||||||
|
address = "192.168.0.131"
|
||||||
|
port = 8000
|
||||||
|
workers = 4
|
||||||
|
max_blocking = 512
|
||||||
|
keep_alive = 5
|
||||||
|
ident = "Rocket"
|
||||||
|
log_level = "normal"
|
||||||
|
temp_dir = "/tmp"
|
||||||
|
cli_colors = true
|
||||||
|
## NOTE: Don't (!) use this key! Generate your own!
|
||||||
|
secret_key = "abcdefghijklmnop"
|
||||||
|
|
||||||
|
[default.limits]
|
||||||
|
form = "64 kB"
|
||||||
|
json = "1 MiB"
|
||||||
|
msgpack = "2 MiB"
|
||||||
|
"file/jpg" = "5 MiB"
|
||||||
|
|
||||||
|
# [default.tls]
|
||||||
|
# certs = "path/to/cert-chain.pem"
|
||||||
|
# key = "path/to/key.pem"
|
||||||
|
|
||||||
|
[default.shutdown]
|
||||||
|
ctrlc = true
|
||||||
|
signals = ["term", "hup"]
|
||||||
|
grace = 5
|
||||||
|
mercy = 5
|
43
src/main.rs
43
src/main.rs
@ -1,18 +1,30 @@
|
|||||||
|
pub mod sql;
|
||||||
|
|
||||||
// relevant macros and imports for rocket.rs
|
// relevant macros and imports for rocket.rs
|
||||||
#[macro_use] extern crate rocket;
|
#[macro_use] extern crate rocket;
|
||||||
use rocket::{
|
use rocket::{
|
||||||
Rocket,
|
Rocket,
|
||||||
Build,
|
Build,
|
||||||
fs::{FileServer, relative},
|
fs::{
|
||||||
serde::{Deserialize, json::Json}
|
FileServer,
|
||||||
|
relative
|
||||||
|
},
|
||||||
|
serde::{
|
||||||
|
Deserialize,
|
||||||
|
json::Json
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
pub mod sql;
|
|
||||||
|
|
||||||
#[get("/")]
|
#[get("/")]
|
||||||
fn test() -> String {
|
fn test() -> String {
|
||||||
sql::create_database()
|
sql::create_database()
|
||||||
.expect("couldn't create database");
|
.expect("couldn't create database");
|
||||||
|
|
||||||
|
sql::create_user("arlo", "passwod123")
|
||||||
|
.expect("couldn't create user");
|
||||||
|
|
||||||
|
sql::create_user("arlo","password123")
|
||||||
|
.expect("couldn't create user");
|
||||||
String::from("Hello World!")
|
String::from("Hello World!")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,7 +42,9 @@ struct PostTest<'r> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[post("/post_test", data = "<test>")]
|
#[post("/post_test", data = "<test>")]
|
||||||
fn post_test(test: Json<PostTest<'_>>) {
|
fn post_test(
|
||||||
|
test: Json<PostTest<'_>>
|
||||||
|
) {
|
||||||
sql::post_test(
|
sql::post_test(
|
||||||
test.test_type,
|
test.test_type,
|
||||||
test.test_length,
|
test.test_length,
|
||||||
@ -43,10 +57,27 @@ fn post_test(test: Json<PostTest<'_>>) {
|
|||||||
).expect("error in posting test to tests table");
|
).expect("error in posting test to tests table");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Deserialize)]
|
||||||
|
#[serde(crate = "rocket::serde")]
|
||||||
|
struct User<'r> {
|
||||||
|
username: &'r str,
|
||||||
|
password: &'r str
|
||||||
|
}
|
||||||
|
|
||||||
|
#[post("/create_user", data = "<user>")]
|
||||||
|
fn create_user(
|
||||||
|
user: Json<User<'_>>
|
||||||
|
) {
|
||||||
|
sql::create_user(
|
||||||
|
user.username,
|
||||||
|
user.password
|
||||||
|
).expect("Error: Couldn't create new user");
|
||||||
|
}
|
||||||
|
|
||||||
#[launch]
|
#[launch]
|
||||||
fn rocket() -> Rocket<Build> {
|
fn rocket() -> Rocket<Build> {
|
||||||
rocket::build()
|
rocket::build()
|
||||||
.mount("/test", routes![test]) // testing only, should return "Hello world"
|
.mount("/test", routes![test]) // testing only, should return "Hello world"
|
||||||
.mount("/api", routes![post_test])
|
.mount("/api", routes![post_test, create_user])
|
||||||
.mount("/typing", FileServer::from(relative!("website"))) // hosts the fileserver
|
.mount("/typing", FileServer::from(relative!("website"))) // hosts the fileserver
|
||||||
}
|
}
|
82
src/sql.rs
82
src/sql.rs
@ -11,7 +11,7 @@ pub fn create_database() -> Result<()> {
|
|||||||
connection.execute(
|
connection.execute(
|
||||||
"CREATE TABLE IF NOT EXISTS users (
|
"CREATE TABLE IF NOT EXISTS users (
|
||||||
user_id INTEGER PRIMARY KEY,
|
user_id INTEGER PRIMARY KEY,
|
||||||
username UNIQUE TEXT NOT NULL,
|
username TEXT UNIQUE NOT NULL,
|
||||||
password TEXT NOT NULL
|
password TEXT NOT NULL
|
||||||
)",
|
)",
|
||||||
()
|
()
|
||||||
@ -36,25 +36,77 @@ pub fn create_database() -> Result<()> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn post_test(test_type: &str, test_length: u32, test_time: u32, test_seed: i64, quote_id: i32, wpm: u8, accuracy: u8, user_id: u32)
|
pub fn post_test(
|
||||||
-> Result<()> {
|
test_type: &str,
|
||||||
|
test_length: u32,
|
||||||
|
test_time: u32,
|
||||||
|
test_seed: i64,
|
||||||
|
quote_id: i32,
|
||||||
|
wpm: u8,
|
||||||
|
accuracy: u8,
|
||||||
|
user_id: u32
|
||||||
|
) -> Result<()> {
|
||||||
let connection = get_connection();
|
let connection = get_connection();
|
||||||
|
|
||||||
connection.execute(
|
connection.execute(
|
||||||
"INSERT INTO tests (
|
"INSERT INTO tests (
|
||||||
test_type,
|
test_type,
|
||||||
test_length,
|
test_length,
|
||||||
test_time,
|
test_time,
|
||||||
test_seed,
|
test_seed,
|
||||||
quote_id,
|
quote_id,
|
||||||
wpm,
|
wpm,
|
||||||
accuracy,
|
accuracy,
|
||||||
user_id
|
user_id
|
||||||
)
|
)
|
||||||
VALUES
|
VALUES(
|
||||||
(?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8)
|
?1,
|
||||||
", (test_type, test_length, test_time, test_seed, quote_id,
|
?2,
|
||||||
wpm, accuracy,user_id))?;
|
?3,
|
||||||
|
?4,
|
||||||
|
?5,
|
||||||
|
?6,
|
||||||
|
?7,
|
||||||
|
?8
|
||||||
|
)
|
||||||
|
",
|
||||||
|
(
|
||||||
|
test_type,
|
||||||
|
test_length,
|
||||||
|
test_time,
|
||||||
|
test_seed,
|
||||||
|
quote_id,
|
||||||
|
wpm,
|
||||||
|
accuracy,
|
||||||
|
user_id
|
||||||
|
)
|
||||||
|
)?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn create_user(
|
||||||
|
username: &str,
|
||||||
|
password: &str
|
||||||
|
) -> Result<()> {
|
||||||
|
let connection = get_connection();
|
||||||
|
|
||||||
|
connection.execute(
|
||||||
|
"
|
||||||
|
INSERT INTO users (
|
||||||
|
username,
|
||||||
|
password
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
?1,
|
||||||
|
?2
|
||||||
|
)
|
||||||
|
",
|
||||||
|
(
|
||||||
|
username,
|
||||||
|
password
|
||||||
|
)
|
||||||
|
)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
@ -18,7 +18,16 @@ class API {
|
|||||||
* @param {int} accuracy
|
* @param {int} accuracy
|
||||||
* @param {int} userId
|
* @param {int} userId
|
||||||
*/
|
*/
|
||||||
postTest(pTestType, pTestLength, pTestTime, pTestSeed, pQuoteId, pWpm, pAccuracy, pUserId) {
|
postTest(
|
||||||
|
pTestType,
|
||||||
|
pTestLength,
|
||||||
|
pTestTime,
|
||||||
|
pTestSeed,
|
||||||
|
pQuoteId,
|
||||||
|
pWpm,
|
||||||
|
pAccuracy,
|
||||||
|
pUserId
|
||||||
|
) {
|
||||||
const data = {
|
const data = {
|
||||||
'test_type': pTestType,
|
'test_type': pTestType,
|
||||||
'test_length': pTestLength,
|
'test_length': pTestLength,
|
||||||
@ -31,8 +40,14 @@ class API {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const xhr = new XMLHttpRequest();
|
const xhr = new XMLHttpRequest();
|
||||||
xhr.open("POST", this.url+"post_test");
|
xhr.open(
|
||||||
xhr.send(JSON.stringify(data));
|
"POST",
|
||||||
|
this.url+"post_test"
|
||||||
|
);
|
||||||
|
|
||||||
|
xhr.send(
|
||||||
|
JSON.stringify(data)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -132,4 +147,32 @@ class API {
|
|||||||
|
|
||||||
this.postTest(testType, testLength, testTime, testSeed, quoteId, wpm, accuracy, userId);
|
this.postTest(testType, testLength, testTime, testSeed, quoteId, wpm, accuracy, userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* takes a validated name and password and sends
|
||||||
|
* a post request to make a user with the given
|
||||||
|
* username and password
|
||||||
|
* @param {String} username
|
||||||
|
* @param {String} password
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
createUser(
|
||||||
|
username,
|
||||||
|
password
|
||||||
|
) {
|
||||||
|
const user = {
|
||||||
|
username: username,
|
||||||
|
password: password
|
||||||
|
};
|
||||||
|
|
||||||
|
const xhr = new XMLHttpRequest();
|
||||||
|
xhr.open(
|
||||||
|
"POST",
|
||||||
|
`${this.url}create_user/`
|
||||||
|
)
|
||||||
|
|
||||||
|
xhr.send(
|
||||||
|
JSON.stringify(user)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user