Add: ErrorMessage struct for print in appropriate language

This commit is contained in:
itiB
2020-10-22 18:02:26 +09:00
parent 1d1f1c0f1a
commit 692f471004
2 changed files with 79 additions and 0 deletions

View File

@@ -4,6 +4,7 @@ mod common;
mod configs;
pub mod detection;
mod powershell;
mod print;
mod security;
mod sysmon;
mod system;

78
src/detections/print.rs Normal file
View File

@@ -0,0 +1,78 @@
use std::collections::HashMap;
#[derive(Debug)]
pub enum Lang {
ja,
en,
}
#[derive(Debug)]
pub struct MessageLanguages {
ja: String,
en: String,
}
#[derive(Debug)]
pub struct ErrorMessage {
map: HashMap<String, MessageLanguages>,
}
impl ErrorMessage {
pub fn new() -> Self {
let mut messages: HashMap<String, MessageLanguages> = HashMap::new();
messages.insert(
"undefined".to_string(),
MessageLanguages {
ja: "未設定".to_string(),
en: "Undefined".to_string(),
},
);
ErrorMessage { map: messages }
}
/// エラーメッセージを設定
pub fn insert_rule(&mut self, error_code: String, message: MessageLanguages) {
self.map.insert(error_code, message);
}
/// エラーメッセージを指定された言語で返す
pub fn return_error_message(&self, error_num: &str, lang: Lang) -> String {
let messages = if let Some(boxed_message) = self.map.get(error_num) {
boxed_message
} else {
self.map.get("undefined").unwrap()
};
match lang {
Lang::ja => messages.ja.clone(),
Lang::en => messages.en.clone(),
}
}
}
#[test]
fn test_create_error_message() {
let mut error_message = ErrorMessage::new();
error_message.insert_rule(
"4103".to_string(),
MessageLanguages {
ja: "パイプライン実行をしています".to_string(),
en: "Execute pipeline".to_string(),
},
);
let message_ja1 = error_message.return_error_message("4103", Lang::ja);
assert_eq!(message_ja1, "パイプライン実行をしています");
let message_ja2 = error_message.return_error_message("4103", Lang::ja);
assert_eq!(message_ja2, "パイプライン実行をしています");
let message_en1 = error_message.return_error_message("4103", Lang::en);
assert_eq!(message_en1, "Execute pipeline");
let message_en2 = error_message.return_error_message("4103", Lang::en);
assert_eq!(message_en2, "Execute pipeline");
let undef_ja = error_message.return_error_message("HOGE", Lang::ja);
assert_eq!(undef_ja, "未設定");
let undef_en = error_message.return_error_message("HOGE", Lang::en);
assert_eq!(undef_en, "Undefined");
}