pub struct FAQUrl;
impl FAQUrl {
pub const APPLY_TOPIC_URL: &'static str = "https://rocketmq.apache.org/docs/bestPractice/06FAQ";
pub const CLIENT_PARAMETER_CHECK_URL: &'static str = "https://rocketmq.apache.org/docs/bestPractice/06FAQ";
pub const CLIENT_SERVICE_NOT_OK: &'static str = "https://rocketmq.apache.org/docs/bestPractice/06FAQ";
pub const GROUP_NAME_DUPLICATE_URL: &'static str = "https://rocketmq.apache.org/docs/bestPractice/06FAQ";
pub const LOAD_JSON_EXCEPTION: &'static str = "https://rocketmq.apache.org/docs/bestPractice/06FAQ";
const MORE_INFORMATION: &'static str = "For more information, please visit the url, ";
pub const MQLIST_NOT_EXIST: &'static str = "https://rocketmq.apache.org/docs/bestPractice/06FAQ";
pub const NAME_SERVER_ADDR_NOT_EXIST_URL: &'static str = "https://rocketmq.apache.org/docs/bestPractice/06FAQ";
pub const NO_TOPIC_ROUTE_INFO: &'static str = "https://rocketmq.apache.org/docs/bestPractice/06FAQ";
pub const SAME_GROUP_DIFFERENT_TOPIC: &'static str = "https://rocketmq.apache.org/docs/bestPractice/06FAQ";
pub const SEND_MSG_FAILED: &'static str = "https://rocketmq.apache.org/docs/bestPractice/06FAQ";
pub const SUBSCRIPTION_GROUP_NOT_EXIST: &'static str = "https://rocketmq.apache.org/docs/bestPractice/06FAQ";
const TIP_STRING_BEGIN: &'static str = "\nSee ";
const TIP_STRING_END: &'static str = " for further details.";
pub const UNEXPECTED_EXCEPTION_URL: &'static str = "https://rocketmq.apache.org/docs/bestPractice/06FAQ";
pub const UNKNOWN_HOST_EXCEPTION: &'static str = "https://rocketmq.apache.org/docs/bestPractice/06FAQ";
pub fn suggest_todo(url: &'static str) -> String {
format!("{}{}{}", Self::TIP_STRING_BEGIN, url, Self::TIP_STRING_END)
}
pub fn attach_default_url(error_message: Option<&str>) -> String {
if let Some(err_msg) = error_message {
let already_has_see_tip = err_msg.contains(Self::TIP_STRING_BEGIN);
let already_has_default = err_msg.contains(Self::MORE_INFORMATION);
if !already_has_see_tip && !already_has_default {
return format!(
"{}\n{}{}",
err_msg,
Self::MORE_INFORMATION,
Self::UNEXPECTED_EXCEPTION_URL
);
}
}
error_message.unwrap_or_default().to_string()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn attach_default_url_is_idempotent_and_preserves_format() {
let ordinary_error = "Test error";
let first_message = FAQUrl::attach_default_url(Some(ordinary_error));
assert_eq!(
first_message,
format!(
"{}\n{}{}",
ordinary_error,
FAQUrl::MORE_INFORMATION,
FAQUrl::UNEXPECTED_EXCEPTION_URL
)
);
let second_message = FAQUrl::attach_default_url(Some(&first_message));
assert_eq!(second_message, first_message);
let err_message_with_tip = format!("Error with tip {}", FAQUrl::TIP_STRING_BEGIN);
assert_eq!(
err_message_with_tip,
FAQUrl::attach_default_url(Some(&err_message_with_tip))
);
assert_eq!("", FAQUrl::attach_default_url(None));
}
}