formatting & lints, one fix for member-only groups
This commit is contained in:
+51
-22
@@ -1,44 +1,49 @@
|
||||
use std::error::Error;
|
||||
use std::borrow::Cow;
|
||||
use std::error::Error;
|
||||
|
||||
use crate::error::GroupError;
|
||||
|
||||
pub trait LogError {
|
||||
fn log_error<S : AsRef<str>>(self, msg: S);
|
||||
fn log_error<S: AsRef<str>>(self, msg: S);
|
||||
}
|
||||
|
||||
impl<V, E : Error> LogError for Result<V, E> {
|
||||
fn log_error<S : AsRef<str>>(self, msg: S) {
|
||||
impl<V, E: Error> LogError for Result<V, E> {
|
||||
fn log_error<S: AsRef<str>>(self, msg: S) {
|
||||
match self {
|
||||
Ok(_) => {}
|
||||
Err(e) => {
|
||||
error!("{}: {}", msg.as_ref(), e);
|
||||
error!("{}: {}", msg.as_ref(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn acct_to_server(acct : &str) -> Option<&str> {
|
||||
pub(crate) fn acct_to_server(acct: &str) -> Option<&str> {
|
||||
acct.trim_start_matches('@').split('@').nth(1)
|
||||
}
|
||||
|
||||
pub(crate) fn normalize_acct<'a, 'g>(acct : &'a str, group: &'g str) -> Result<Cow<'a, str>, GroupError> {
|
||||
pub(crate) fn normalize_acct<'a, 'g>(
|
||||
acct: &'a str,
|
||||
group: &'g str,
|
||||
) -> Result<Cow<'a, str>, GroupError> {
|
||||
let acct = acct.trim_start_matches('@');
|
||||
if acct_to_server(acct).is_some() {
|
||||
// already has server
|
||||
Ok(Cow::Borrowed(acct))
|
||||
} else if let Some(gs) = acct_to_server(group) {
|
||||
// attach server from the group actor
|
||||
Ok(Cow::Owned(format!("{}@{}", acct, gs)))
|
||||
} else {
|
||||
if let Some(gs) = acct_to_server(group) {
|
||||
Ok(Cow::Owned(format!("{}@{}", acct, gs)))
|
||||
} else {
|
||||
Err(GroupError::BadConfig(format!("Group acct {} is missing server!", group).into()))
|
||||
}
|
||||
Err(GroupError::BadConfig(
|
||||
format!("Group acct {} is missing server!", group).into(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use crate::utils::{acct_to_server, normalize_acct};
|
||||
use crate::error::GroupError;
|
||||
use std::borrow::Cow;
|
||||
use crate::utils::{acct_to_server, normalize_acct};
|
||||
|
||||
#[test]
|
||||
fn test_acct_to_server() {
|
||||
@@ -49,13 +54,37 @@ mod test {
|
||||
|
||||
#[test]
|
||||
fn test_normalize_acct() {
|
||||
assert_eq!(Ok("piggo@piggo.space".into()), normalize_acct("piggo", "betty@piggo.space"));
|
||||
assert_eq!(Ok("piggo@piggo.space".into()), normalize_acct("@piggo", "betty@piggo.space"));
|
||||
assert_eq!(Ok("piggo@piggo.space".into()), normalize_acct("@piggo@piggo.space", "betty@piggo.space"));
|
||||
assert_eq!(Ok("piggo@piggo.space".into()), normalize_acct("@piggo@piggo.space", "oggip@mastodon.social"));
|
||||
assert_eq!(Ok("piggo@piggo.space".into()), normalize_acct("piggo@piggo.space", "oggip@mastodon.social"));
|
||||
assert_eq!(Ok("piggo@mastodon.social".into()), normalize_acct("@piggo", "oggip@mastodon.social"));
|
||||
assert_eq!(Ok("piggo@piggo.space".into()), normalize_acct("piggo@piggo.space", "uhh"));
|
||||
assert_eq!(Err(GroupError::BadConfig("_".into())), normalize_acct("piggo", "uhh"));
|
||||
assert_eq!(
|
||||
Ok("piggo@piggo.space".into()),
|
||||
normalize_acct("piggo", "betty@piggo.space")
|
||||
);
|
||||
assert_eq!(
|
||||
Ok("piggo@piggo.space".into()),
|
||||
normalize_acct("@piggo", "betty@piggo.space")
|
||||
);
|
||||
assert_eq!(
|
||||
Ok("piggo@piggo.space".into()),
|
||||
normalize_acct("@piggo@piggo.space", "betty@piggo.space")
|
||||
);
|
||||
assert_eq!(
|
||||
Ok("piggo@piggo.space".into()),
|
||||
normalize_acct("@piggo@piggo.space", "oggip@mastodon.social")
|
||||
);
|
||||
assert_eq!(
|
||||
Ok("piggo@piggo.space".into()),
|
||||
normalize_acct("piggo@piggo.space", "oggip@mastodon.social")
|
||||
);
|
||||
assert_eq!(
|
||||
Ok("piggo@mastodon.social".into()),
|
||||
normalize_acct("@piggo", "oggip@mastodon.social")
|
||||
);
|
||||
assert_eq!(
|
||||
Ok("piggo@piggo.space".into()),
|
||||
normalize_acct("piggo@piggo.space", "uhh")
|
||||
);
|
||||
assert_eq!(
|
||||
Err(GroupError::BadConfig("_".into())),
|
||||
normalize_acct("piggo", "uhh")
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user