cargo fmt
This commit is contained in:
parent
ea3e9bcd5a
commit
364fdede86
3 changed files with 32 additions and 17 deletions
|
@ -1,8 +1,8 @@
|
|||
use crate::Comment;
|
||||
use derive_more::From;
|
||||
use rusqlite::{params, Connection, Result};
|
||||
use serde::Deserialize;
|
||||
use std::fs;
|
||||
use derive_more::From;
|
||||
use std::path::PathBuf;
|
||||
|
||||
pub struct Database {
|
||||
|
@ -26,7 +26,11 @@ pub enum DatabaseCreationError {
|
|||
}
|
||||
|
||||
impl Database {
|
||||
pub fn new(testing: bool, name: &str, settings: DatabaseSettings) -> Result<Self, DatabaseCreationError> {
|
||||
pub fn new(
|
||||
testing: bool,
|
||||
name: &str,
|
||||
settings: DatabaseSettings,
|
||||
) -> Result<Self, DatabaseCreationError> {
|
||||
let conn = if testing {
|
||||
Connection::open_in_memory()
|
||||
} else {
|
||||
|
|
21
src/error.rs
21
src/error.rs
|
@ -1,10 +1,13 @@
|
|||
use crate::Database;
|
||||
|
||||
use actix_web::{HttpResponse, error::BlockingError};
|
||||
use std::{sync::{PoisonError, MutexGuard}, string::FromUtf8Error};
|
||||
use sanitize_html::errors::SanitizeError;
|
||||
use validator::ValidationErrors;
|
||||
use actix_web::{error::BlockingError, HttpResponse};
|
||||
use derive_more::From;
|
||||
use sanitize_html::errors::SanitizeError;
|
||||
use std::{
|
||||
string::FromUtf8Error,
|
||||
sync::{MutexGuard, PoisonError},
|
||||
};
|
||||
use validator::ValidationErrors;
|
||||
|
||||
#[derive(From, Debug)]
|
||||
pub enum Error {
|
||||
|
@ -43,20 +46,20 @@ impl Error {
|
|||
| Self::PageFetchError(_) => {
|
||||
eprintln!("{:?}", self);
|
||||
HttpResponse::InternalServerError()
|
||||
},
|
||||
}
|
||||
}
|
||||
.reason(match self {
|
||||
Self::InvalidOrigin => "invalid request origin",
|
||||
Self::InvalidBodyEncoding(_)
|
||||
| Self::InvalidBodyJson(_) => "invalid request body",
|
||||
Self::InvalidBodyEncoding(_) | Self::InvalidBodyJson(_) => "invalid request body",
|
||||
Self::InvalidUrl => "invalid request url",
|
||||
Self::InvalidFields(_) => "invalid request field",
|
||||
Self::InvalidContentId => "invalid request content id",
|
||||
Self::InvalidParent => "invalid comment parent",
|
||||
Self::EmailRequired => "comment email required",
|
||||
Self::NameRequired => "comment name required",
|
||||
Self::DatabaseAccessBlockingError(_)
|
||||
| Self::DatabaseAccessPoisonError => "database access error",
|
||||
Self::DatabaseAccessBlockingError(_) | Self::DatabaseAccessPoisonError => {
|
||||
"database access error"
|
||||
}
|
||||
Self::DatabaseInternalError(_) => "database internal error",
|
||||
Self::SanitizationError(_) => "comment sanitization error",
|
||||
Self::PageFetchError(_) => "page fetch error",
|
||||
|
|
20
src/main.rs
20
src/main.rs
|
@ -98,7 +98,8 @@ async fn _post_comment(
|
|||
bytes: web::Bytes,
|
||||
) -> Result<(), Error> {
|
||||
let PostCommentsRequest { url, comment } = {
|
||||
let mut req = serde_json::from_str::<PostCommentsRequest>(&String::from_utf8(bytes.to_vec())?)?;
|
||||
let mut req =
|
||||
serde_json::from_str::<PostCommentsRequest>(&String::from_utf8(bytes.to_vec())?)?;
|
||||
req.comment.text = sanitize_str(&DEFAULT, &req.comment.text)?.replace(">", ">"); // required for markdown quotes
|
||||
if let Some(ref mut author) = req.comment.author {
|
||||
*author = sanitize_str(&DEFAULT, &author)?;
|
||||
|
@ -151,7 +152,8 @@ async fn _post_comment(
|
|||
}
|
||||
database.create_comment(&comment)?;
|
||||
Ok(())
|
||||
}).await?
|
||||
})
|
||||
.await?
|
||||
}
|
||||
|
||||
#[post("/")]
|
||||
|
@ -201,10 +203,16 @@ async fn get_page_data(url: &str) -> Result<Option<PageData>, reqwest::Error> {
|
|||
#[actix_web::main]
|
||||
async fn main() -> std::io::Result<()> {
|
||||
let arguments = Arguments::parse();
|
||||
let database_settings: HashMap<String, DatabaseSettings> = match serde_yaml::from_reader(File::open(arguments.config)?) {
|
||||
Ok(settings) => settings,
|
||||
Err(_) => return Err(std::io::Error::new(std::io::ErrorKind::Other, "invalid config file")),
|
||||
};
|
||||
let database_settings: HashMap<String, DatabaseSettings> =
|
||||
match serde_yaml::from_reader(File::open(arguments.config)?) {
|
||||
Ok(settings) => settings,
|
||||
Err(_) => {
|
||||
return Err(std::io::Error::new(
|
||||
std::io::ErrorKind::Other,
|
||||
"invalid config file",
|
||||
))
|
||||
}
|
||||
};
|
||||
let mut databases = HashMap::new();
|
||||
for (site, settings) in database_settings.iter() {
|
||||
databases.insert(
|
||||
|
|
Loading…
Add table
Reference in a new issue