Create user_input_common shared lib crate

This commit is contained in:
Brandon Thomas committed 2022-02-06 19:04:08 -05:00
1 parent 4e8c736814
commit c25639baa4
30 files changed
+70 -37

No files matched your search

Generated
+12
View File
@@ -3804,6 +3804,7 @@ dependencies = [
"twitch_api2",
"twitch_common",
"twitch_oauth2",
"user_input_common",
"uuid",
]
@@ -4538,6 +4539,17 @@ dependencies = [
"percent-encoding 2.1.0",
]
[[package]]
name = "user_input_common"
version = "0.0.1"
dependencies = [
"anyhow",
"container_common",
"log",
"once_cell",
"regex",
]
[[package]]
name = "utf-8"
version = "0.7.6"
+1
View File
@@ -9,6 +9,7 @@ members = [
"crates/lib/redis_common",
"crates/lib/tts_common",
"crates/lib/twitch_common",
"crates/lib/user_input_common",
# Application
"crates/service/obs_gateway",
+24
View File
@@ -0,0 +1,24 @@
[package]
name = "user_input_common"
edition = "2018"
version = "0.0.1"
authors = [
"Brandon Thomas <bt@brand.io>",
"Brandon Thomas <echelon@gmail.com>",
]
publish = false
[lib]
name = "user_input_common"
path = "src/lib.rs"
[dependencies]
# Internal
container_common = { path = "../container_common" }
# External
anyhow = "1.0.40"
log = "0.4.14"
once_cell = "1.9.0"
regex = "1.5.4"
@@ -1,15 +1,16 @@
use std::collections::HashSet;
use crate::BANNED_SLURS;
use once_cell::sync::Lazy;
use std::collections::HashSet;
pub fn contains_slurs(unparsed_text: &str) -> bool {
lazy_static! {
static ref BANNED_SLURS_SET : HashSet<String> = BANNED_SLURS.lines()
static BANNED_SLURS_SET : Lazy<HashSet<String>> = Lazy::new(|| {
BANNED_SLURS.lines()
.map(|line| line.trim())
.filter(|line| !(line.starts_with("#") || line.is_empty()))
.map(|line| line.to_string())
.collect::<HashSet<String>>();
}
.collect::<HashSet<String>>()
});
pub fn contains_slurs(unparsed_text: &str) -> bool {
for wordlike in unparsed_text.split_ascii_whitespace() {
if BANNED_SLURS_SET.contains(wordlike) {
return true;
@@ -21,7 +22,7 @@ pub fn contains_slurs(unparsed_text: &str) -> bool {
#[cfg(test)]
mod tests {
use crate::validations::check_for_slurs::contains_slurs;
use crate::check_for_slurs::contains_slurs;
#[test]
fn valid_text_passes() {
+12
View File
@@ -0,0 +1,12 @@
#![forbid(dead_code)]
#![forbid(non_snake_case)]
#![forbid(private_in_public)]
#![forbid(unused_imports)]
#![forbid(unused_must_use)] // Important
#![forbid(unused_mut)]
#![forbid(unused_variables)]
#![forbid(warnings)]
pub (crate) const BANNED_SLURS : &'static str = include_str!("../../../../db/banned_slurs.txt");
pub mod check_for_slurs;
@@ -45,6 +45,7 @@ http_server_common = { path = "../../lib/http_server_common" }
redis_common = { path = "../../lib/redis_common" }
tts_common = { path = "../../lib/tts_common" }
twitch_common = { path = "../../lib/twitch_common" }
user_input_common = { path = "../../lib/user_input_common" }
# External
anyhow = "1.0.40"
@@ -17,7 +17,6 @@ use crate::http_server::web_utils::response_success_helpers::simple_json_success
use crate::server_state::ServerState;
use crate::util::email_to_gravatar::email_to_gravatar;
use crate::util::markdown_to_html::markdown_to_html;
use crate::validations::check_for_slurs::contains_slurs;
use http_server_common::response::serialize_as_json_error::serialize_as_json_error;
use log::{info, warn, log};
use regex::Regex;
@@ -14,7 +14,6 @@ use crate::http_server::web_utils::response_success_helpers::simple_json_success
use crate::server_state::ServerState;
use crate::util::email_to_gravatar::email_to_gravatar;
use crate::util::markdown_to_html::markdown_to_html;
use crate::validations::check_for_slurs::contains_slurs;
use database_queries::tokens::Tokens;
use http_server_common::response::serialize_as_json_error::serialize_as_json_error;
use log::{info, warn, log};
@@ -17,7 +17,6 @@ use crate::http_server::web_utils::response_success_helpers::simple_json_success
use crate::server_state::ServerState;
use crate::util::email_to_gravatar::email_to_gravatar;
use crate::util::markdown_to_html::markdown_to_html;
use crate::validations::check_for_slurs::contains_slurs;
use http_server_common::response::serialize_as_json_error::serialize_as_json_error;
use log::{info, warn, log};
use regex::Regex;
@@ -16,7 +16,6 @@ use crate::http_server::web_utils::response_success_helpers::simple_json_success
use crate::server_state::ServerState;
use crate::util::email_to_gravatar::email_to_gravatar;
use crate::util::markdown_to_html::markdown_to_html;
use crate::validations::check_for_slurs::contains_slurs;
use http_server_common::response::serialize_as_json_error::serialize_as_json_error;
use lexical_sort::natural_lexical_cmp;
use log::{info, warn, log};
@@ -15,7 +15,6 @@ use crate::http_server::web_utils::response_success_helpers::simple_json_success
use crate::server_state::ServerState;
use crate::util::email_to_gravatar::email_to_gravatar;
use crate::util::markdown_to_html::markdown_to_html;
use crate::validations::check_for_slurs::contains_slurs;
use http_server_common::response::serialize_as_json_error::serialize_as_json_error;
use log::{info, warn, log};
use regex::Regex;
@@ -14,7 +14,6 @@ use crate::http_server::web_utils::response_success_helpers::simple_json_success
use crate::server_state::ServerState;
use crate::util::email_to_gravatar::email_to_gravatar;
use crate::util::markdown_to_html::markdown_to_html;
use crate::validations::check_for_slurs::contains_slurs;
use log::{info, warn, log};
use regex::Regex;
use sqlx::MySqlPool;
@@ -14,7 +14,6 @@ use crate::http_server::web_utils::response_success_helpers::simple_json_success
use crate::server_state::ServerState;
use crate::util::email_to_gravatar::email_to_gravatar;
use crate::util::markdown_to_html::markdown_to_html;
use crate::validations::check_for_slurs::contains_slurs;
use http_server_common::response::serialize_as_json_error::serialize_as_json_error;
use log::{info, warn, log};
use regex::Regex;
@@ -16,7 +16,6 @@ use crate::http_server::web_utils::response_success_helpers::simple_json_success
use crate::server_state::ServerState;
use crate::util::email_to_gravatar::email_to_gravatar;
use crate::util::markdown_to_html::markdown_to_html;
use crate::validations::check_for_slurs::contains_slurs;
use http_server_common::response::serialize_as_json_error::serialize_as_json_error;
use log::{info, warn, log};
use regex::Regex;
@@ -10,7 +10,6 @@ use crate::http_server::web_utils::ip_address::get_request_ip;
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
use crate::http_server::web_utils::response_success_helpers::simple_json_success;
use crate::server_state::ServerState;
use crate::validations::check_for_slurs::contains_slurs;
use crate::validations::ip_addresses::validate_moderator_provided_ip_address;
use crate::validations::model_uploads::validate_model_title;
use crate::validations::passwords::validate_passwords;
@@ -11,7 +11,6 @@ use crate::http_server::web_utils::ip_address::get_request_ip;
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
use crate::http_server::web_utils::response_success_helpers::simple_json_success;
use crate::server_state::ServerState;
use crate::validations::check_for_slurs::contains_slurs;
use crate::validations::model_uploads::validate_model_title;
use crate::validations::passwords::validate_passwords;
use crate::validations::username::validate_username;
@@ -12,7 +12,6 @@ use crate::http_server::web_utils::ip_address::get_request_ip;
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
use crate::http_server::web_utils::response_success_helpers::simple_json_success;
use crate::server_state::ServerState;
use crate::validations::check_for_slurs::contains_slurs;
use crate::validations::model_uploads::validate_model_title;
use crate::validations::passwords::validate_passwords;
use crate::validations::username::validate_username;
@@ -12,7 +12,6 @@ use crate::http_server::web_utils::ip_address::get_request_ip;
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
use crate::http_server::web_utils::response_success_helpers::simple_json_success;
use crate::server_state::ServerState;
use crate::validations::check_for_slurs::contains_slurs;
use crate::validations::model_uploads::validate_model_title;
use crate::validations::passwords::validate_passwords;
use crate::validations::username::validate_username;
@@ -14,7 +14,6 @@ use crate::http_server::web_utils::ip_address::get_request_ip;
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
use crate::http_server::web_utils::response_success_helpers::simple_json_success;
use crate::server_state::ServerState;
use crate::validations::check_for_slurs::contains_slurs;
use crate::validations::model_uploads::validate_model_title;
use crate::validations::passwords::validate_passwords;
use crate::validations::username::validate_username;
@@ -12,7 +12,6 @@ use crate::http_server::web_utils::ip_address::get_request_ip;
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
use crate::http_server::web_utils::response_success_helpers::simple_json_success;
use crate::server_state::ServerState;
use crate::validations::check_for_slurs::contains_slurs;
use crate::validations::model_uploads::validate_model_title;
use crate::validations::passwords::validate_passwords;
use crate::validations::username::validate_username;
@@ -1,12 +1,13 @@
use actix_http::Error;
use actix_http::http::header;
use actix_web::cookie::Cookie;
use actix_web::HttpResponseBuilder;
use actix_web::cookie::Cookie;
use actix_web::error::ResponseError;
use actix_web::http::StatusCode;
use actix_web::web::{Path, Json};
use actix_web::{Responder, web, HttpResponse, error, HttpRequest};
use crate::database::enums::record_visibility::RecordVisibility;
use crate::database::enums::vocoder_type::VocoderType;
use crate::database::queries::query_tts_model::select_tts_model_by_token;
use crate::http_server::web_utils::ip_address::get_request_ip;
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
@@ -14,7 +15,6 @@ use crate::http_server::web_utils::response_success_helpers::simple_json_success
use crate::server_state::ServerState;
use crate::util::email_to_gravatar::email_to_gravatar;
use crate::util::markdown_to_html::markdown_to_html;
use crate::validations::check_for_slurs::contains_slurs;
use derive_more::{Display, Error};
use log::{info, warn, log};
use regex::Regex;
@@ -23,7 +23,7 @@ use sqlx::error::DatabaseError;
use sqlx::error::Error::Database;
use sqlx::mysql::MySqlDatabaseError;
use std::sync::Arc;
use crate::database::enums::vocoder_type::VocoderType;
use user_input_common::check_for_slurs::contains_slurs;
/// For the URL PathInfo
#[derive(Deserialize)]
@@ -15,7 +15,6 @@ use crate::http_server::web_utils::response_success_helpers::simple_json_success
use crate::server_state::ServerState;
use crate::util::email_to_gravatar::email_to_gravatar;
use crate::util::markdown_to_html::markdown_to_html;
use crate::validations::check_for_slurs::contains_slurs;
use derive_more::{Display, Error};
use log::{info, warn, log};
use regex::Regex;
@@ -10,7 +10,6 @@ use crate::database::helpers::enums::{DownloadUrlType, W2lTemplateType};
use crate::http_server::web_utils::ip_address::get_request_ip;
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
use crate::server_state::ServerState;
use crate::validations::check_for_slurs::contains_slurs;
use crate::validations::model_uploads::validate_model_title;
use crate::validations::passwords::validate_passwords;
use crate::validations::username::validate_username;
@@ -24,6 +23,7 @@ use sqlx::error::DatabaseError;
use sqlx::error::Error::Database;
use sqlx::mysql::MySqlDatabaseError;
use std::sync::Arc;
use user_input_common::check_for_slurs::contains_slurs;
#[derive(Deserialize)]
pub struct InferTtsRequest {
@@ -1,7 +1,7 @@
use actix_http::Error;
use actix_http::http::header;
use actix_web::cookie::Cookie;
use actix_web::HttpResponseBuilder;
use actix_web::cookie::Cookie;
use actix_web::error::ResponseError;
use actix_web::http::StatusCode;
use actix_web::{Responder, web, HttpResponse, error, HttpRequest};
@@ -12,7 +12,6 @@ use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
use crate::http_server::web_utils::serialize_as_json_error::serialize_as_json_error;
use crate::server_state::ServerState;
use crate::util::email_to_gravatar::email_to_gravatar;
use crate::validations::check_for_slurs::contains_slurs;
use crate::validations::passwords::validate_passwords;
use crate::validations::username::validate_username;
use crate::validations::username_reservations::is_reserved_username;
@@ -27,6 +26,7 @@ use std::collections::HashMap;
use std::fmt::Formatter;
use std::fmt;
use std::sync::Arc;
use user_input_common::check_for_slurs::contains_slurs;
const NEW_USER_ROLE: &'static str = "user";
@@ -1,7 +1,7 @@
use actix_http::Error;
use actix_http::http::header;
use actix_web::cookie::Cookie;
use actix_web::HttpResponseBuilder;
use actix_web::cookie::Cookie;
use actix_web::error::ResponseError;
use actix_web::http::StatusCode;
use actix_web::web::Path;
@@ -15,7 +15,6 @@ use crate::server_state::ServerState;
use crate::util::email_to_gravatar::email_to_gravatar;
use crate::util::markdown_to_html::markdown_to_html;
use crate::validations::cashapp_username::{validate_cashapp_username, normalize_cashapp_username_for_storage};
use crate::validations::check_for_slurs::contains_slurs;
use crate::validations::discord_username::validate_discord_username;
use crate::validations::github_username::validate_github_username;
use crate::validations::passwords::validate_passwords;
@@ -31,6 +30,7 @@ use sqlx::error::DatabaseError;
use sqlx::error::Error::Database;
use sqlx::mysql::MySqlDatabaseError;
use std::sync::Arc;
use user_input_common::check_for_slurs::contains_slurs;
/// For the URL PathInfo
#[derive(Deserialize)]
@@ -14,7 +14,6 @@ use crate::http_server::web_utils::response_success_helpers::simple_json_success
use crate::server_state::ServerState;
use crate::util::email_to_gravatar::email_to_gravatar;
use crate::util::markdown_to_html::markdown_to_html;
use crate::validations::check_for_slurs::contains_slurs;
use derive_more::{Display, Error};
use log::{info, warn, log};
use regex::Regex;
@@ -1,7 +1,7 @@
use actix_http::Error;
use actix_http::http::header;
use actix_web::cookie::Cookie;
use actix_web::HttpResponseBuilder;
use actix_web::cookie::Cookie;
use actix_web::error::ResponseError;
use actix_web::http::StatusCode;
use actix_web::web::{Path, Json};
@@ -14,7 +14,6 @@ use crate::http_server::web_utils::response_success_helpers::simple_json_success
use crate::server_state::ServerState;
use crate::util::email_to_gravatar::email_to_gravatar;
use crate::util::markdown_to_html::markdown_to_html;
use crate::validations::check_for_slurs::contains_slurs;
use derive_more::{Display, Error};
use log::{info, warn, log};
use regex::Regex;
@@ -23,6 +22,7 @@ use sqlx::error::DatabaseError;
use sqlx::error::Error::Database;
use sqlx::mysql::MySqlDatabaseError;
use std::sync::Arc;
use user_input_common::check_for_slurs::contains_slurs;
/// For the URL PathInfo
#[derive(Deserialize)]
@@ -1,7 +1,7 @@
use actix_http::Error;
use actix_http::http::header;
use actix_web::cookie::Cookie;
use actix_web::HttpResponseBuilder;
use actix_web::cookie::Cookie;
use actix_web::error::ResponseError;
use actix_web::http::StatusCode;
use actix_web::{Responder, web, HttpResponse, error, HttpRequest};
@@ -9,7 +9,6 @@ use crate::database::helpers::enums::{DownloadUrlType, CreatorSetVisibility, W2l
use crate::http_server::web_utils::ip_address::get_request_ip;
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
use crate::server_state::ServerState;
use crate::validations::check_for_slurs::contains_slurs;
use crate::validations::model_uploads::validate_model_title;
use crate::validations::passwords::validate_passwords;
use crate::validations::username::validate_username;
@@ -21,6 +20,7 @@ use sqlx::error::DatabaseError;
use sqlx::error::Error::Database;
use sqlx::mysql::MySqlDatabaseError;
use std::sync::Arc;
use user_input_common::check_for_slurs::contains_slurs;
#[derive(Deserialize)]
pub struct UploadW2lTemplateRequest {
@@ -14,7 +14,6 @@
pub const RESERVED_USERNAMES : &'static str = include_str!("../../../../db/reserved_usernames.txt");
pub const RESERVED_SUBSTRINGS : &'static str = include_str!("../../../../db/reserved_usernames_including.txt");
pub const BANNED_SLURS : &'static str = include_str!("../../../../db/banned_slurs.txt");
pub mod database;
pub mod common_env;
@@ -1,5 +1,4 @@
pub mod cashapp_username;
pub mod check_for_slurs;
pub mod discord_username;
pub mod github_username;
pub mod ip_addresses;