Replace actor image fetchers with a single function
This commit is contained in:
parent
dbe54f0924
commit
36730be03b
3 changed files with 45 additions and 53 deletions
|
@ -144,50 +144,35 @@ pub async fn fetch_actor(
|
|||
Ok(actor)
|
||||
}
|
||||
|
||||
pub async fn fetch_actor_avatar(
|
||||
pub async fn fetch_actor_images(
|
||||
actor: &Actor,
|
||||
media_dir: &Path,
|
||||
default: Option<String>,
|
||||
) -> Option<String> {
|
||||
match &actor.icon {
|
||||
Some(icon) => {
|
||||
match fetch_file(&icon.url, media_dir).await {
|
||||
Ok((file_name, _)) => Some(file_name),
|
||||
Err(error) => {
|
||||
log::warn!(
|
||||
"failed to fetch avatar for {} ({})",
|
||||
actor.id,
|
||||
error,
|
||||
);
|
||||
default
|
||||
},
|
||||
}
|
||||
},
|
||||
None => None,
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn fetch_actor_banner(
|
||||
actor: &Actor,
|
||||
media_dir: &Path,
|
||||
default: Option<String>,
|
||||
) -> Option<String> {
|
||||
match &actor.image {
|
||||
Some(image) => {
|
||||
match fetch_file(&image.url, media_dir).await {
|
||||
Ok((file_name, _)) => Some(file_name),
|
||||
Err(error) => {
|
||||
log::warn!(
|
||||
"failed to fetch banner for {} ({})",
|
||||
actor.id,
|
||||
error,
|
||||
);
|
||||
default
|
||||
},
|
||||
}
|
||||
},
|
||||
None => None,
|
||||
}
|
||||
default_avatar: Option<String>,
|
||||
default_banner: Option<String>,
|
||||
) -> (Option<String>, Option<String>) {
|
||||
let maybe_avatar = if let Some(icon) = &actor.icon {
|
||||
match fetch_file(&icon.url, media_dir).await {
|
||||
Ok((file_name, _)) => Some(file_name),
|
||||
Err(error) => {
|
||||
log::warn!("failed to fetch avatar ({})", error);
|
||||
default_avatar
|
||||
},
|
||||
}
|
||||
} else {
|
||||
None
|
||||
};
|
||||
let maybe_banner = if let Some(image) = &actor.image {
|
||||
match fetch_file(&image.url, media_dir).await {
|
||||
Ok((file_name, _)) => Some(file_name),
|
||||
Err(error) => {
|
||||
log::warn!("failed to fetch banner ({})", error);
|
||||
default_banner
|
||||
},
|
||||
}
|
||||
} else {
|
||||
None
|
||||
};
|
||||
(maybe_avatar, maybe_banner)
|
||||
}
|
||||
|
||||
pub async fn fetch_object(
|
||||
|
|
|
@ -25,8 +25,7 @@ use crate::models::profiles::queries::{
|
|||
use crate::models::profiles::types::{DbActorProfile, ProfileCreateData};
|
||||
use super::fetchers::{
|
||||
fetch_actor,
|
||||
fetch_actor_avatar,
|
||||
fetch_actor_banner,
|
||||
fetch_actor_images,
|
||||
fetch_object,
|
||||
perform_webfinger_query,
|
||||
FetchError,
|
||||
|
@ -70,8 +69,12 @@ async fn create_remote_profile(
|
|||
if actor_address.is_local(&instance.host()) {
|
||||
return Err(ImportError::LocalObject);
|
||||
};
|
||||
let avatar = fetch_actor_avatar(&actor, media_dir, None).await;
|
||||
let banner = fetch_actor_banner(&actor, media_dir, None).await;
|
||||
let (maybe_avatar, maybe_banner) = fetch_actor_images(
|
||||
&actor,
|
||||
media_dir,
|
||||
None,
|
||||
None,
|
||||
).await;
|
||||
let (identity_proofs, payment_options, extra_fields) =
|
||||
actor.parse_attachments();
|
||||
let mut profile_data = ProfileCreateData {
|
||||
|
@ -79,8 +82,8 @@ async fn create_remote_profile(
|
|||
hostname: Some(actor_address.hostname),
|
||||
display_name: actor.name.clone(),
|
||||
bio: actor.summary.clone(),
|
||||
avatar,
|
||||
banner,
|
||||
avatar: maybe_avatar,
|
||||
banner: maybe_banner,
|
||||
identity_proofs,
|
||||
payment_options,
|
||||
extra_fields,
|
||||
|
|
|
@ -5,7 +5,7 @@ use tokio_postgres::GenericClient;
|
|||
use crate::activitypub::{
|
||||
activity::Activity,
|
||||
actors::types::Actor,
|
||||
fetcher::fetchers::{fetch_actor_avatar, fetch_actor_banner},
|
||||
fetcher::fetchers::fetch_actor_images,
|
||||
fetcher::helpers::ImportError,
|
||||
vocabulary::PERSON,
|
||||
};
|
||||
|
@ -57,16 +57,20 @@ pub async fn update_remote_profile(
|
|||
actor.public_key.public_key_pem,
|
||||
);
|
||||
};
|
||||
let avatar = fetch_actor_avatar(&actor, media_dir, profile.avatar_file_name).await;
|
||||
let banner = fetch_actor_banner(&actor, media_dir, profile.banner_file_name).await;
|
||||
let (maybe_avatar, maybe_banner) = fetch_actor_images(
|
||||
&actor,
|
||||
media_dir,
|
||||
profile.avatar_file_name,
|
||||
profile.banner_file_name,
|
||||
).await;
|
||||
let (identity_proofs, payment_options, extra_fields) =
|
||||
actor.parse_attachments();
|
||||
let mut profile_data = ProfileUpdateData {
|
||||
display_name: actor.name.clone(),
|
||||
bio: actor.summary.clone(),
|
||||
bio_source: actor.summary.clone(),
|
||||
avatar,
|
||||
banner,
|
||||
avatar: maybe_avatar,
|
||||
banner: maybe_banner,
|
||||
identity_proofs,
|
||||
payment_options,
|
||||
extra_fields,
|
||||
|
|
Loading…
Reference in a new issue