Add testing flag and CORS

main
Elnu 2 years ago
parent 2699a01c54
commit f6281b8820

16
Cargo.lock generated

@ -19,6 +19,21 @@ dependencies = [
"tokio-util", "tokio-util",
] ]
[[package]]
name = "actix-cors"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "414360eed71ba2d5435b185ba43ecbe281dfab5df3898286d6b7be8074372c92"
dependencies = [
"actix-utils",
"actix-web",
"derive_more",
"futures-util",
"log",
"once_cell",
"smallvec",
]
[[package]] [[package]]
name = "actix-http" name = "actix-http"
version = "3.2.1" version = "3.2.1"
@ -1045,6 +1060,7 @@ dependencies = [
name = "soudan" name = "soudan"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"actix-cors",
"actix-web", "actix-web",
"chrono", "chrono",
"md5", "md5",

@ -7,6 +7,7 @@ edition = "2021"
[dependencies] [dependencies]
actix-web = "4" actix-web = "4"
actix-cors = "0.6.1"
rusqlite = { version = "0.27.0", features = ["chrono"] } rusqlite = { version = "0.27.0", features = ["chrono"] }
serde = { version = "1", features = ["derive"] } serde = { version = "1", features = ["derive"] }
serde_json = "1" serde_json = "1"

@ -7,7 +7,10 @@ pub struct Database {
} }
impl Database { impl Database {
pub fn new() -> Result<Self> { pub fn new(testing: bool) -> Result<Self> {
if !testing {
unimplemented!("Persistent databases unimplemented!");
}
let conn = Connection::open_in_memory()?; let conn = Connection::open_in_memory()?;
conn.execute( conn.execute(
"CREATE TABLE comment ( "CREATE TABLE comment (

@ -1,11 +1,12 @@
mod comment; mod comment;
use actix_cors::Cors;
pub use comment::*; pub use comment::*;
mod database; mod database;
pub use database::Database; pub use database::Database;
use actix_web::{get, post, web, App, HttpResponse, HttpServer, Responder}; use actix_web::{get, post, web, App, HttpResponse, HttpServer, Responder};
use std::sync::Mutex; use std::{env, sync::Mutex};
use validator::Validate; use validator::Validate;
struct AppState { struct AppState {
@ -45,13 +46,24 @@ async fn post_comment(data: web::Data<AppState>, bytes: web::Bytes) -> impl Resp
#[actix_web::main] #[actix_web::main]
async fn main() -> Result<(), std::io::Error> { async fn main() -> Result<(), std::io::Error> {
let db = Database::new().unwrap(); let testing = {
let mut testing = false;
for argument in env::args() {
if argument == "--testing" || argument == "-t" {
testing = true;
break;
}
}
testing
};
let db = Database::new(testing).unwrap();
let state = web::Data::new(AppState { db: Mutex::new(db) }); let state = web::Data::new(AppState { db: Mutex::new(db) });
HttpServer::new(move || { HttpServer::new(move || {
App::new() App::new()
.service(get_comments) .service(get_comments)
.service(post_comment) .service(post_comment)
.app_data(state.clone()) .app_data(state.clone())
.wrap(if testing { Cors::permissive() } else { Cors::default() })
}) })
.bind(("127.0.0.1", 8080))? .bind(("127.0.0.1", 8080))?
.run() .run()

Loading…
Cancel
Save