Don't match object type in receive_activity()

This commit is contained in:
silverpill 2022-12-06 23:59:33 +00:00
parent 67313dbac7
commit c218d3ebce

View file

@ -154,9 +154,6 @@ pub async fn receive_activity(
.map_err(|_| ValidationError("invalid activity"))?; .map_err(|_| ValidationError("invalid activity"))?;
let activity_type = activity.activity_type.clone(); let activity_type = activity.activity_type.clone();
let activity_actor = activity.actor.clone(); let activity_actor = activity.actor.clone();
let maybe_object_type = activity.object.get("type")
.and_then(|val| val.as_str())
.unwrap_or("Unknown");
let is_self_delete = if activity_type == DELETE { let is_self_delete = if activity_type == DELETE {
let object_id = find_object_id(&activity.object)?; let object_id = find_object_id(&activity.object)?;
@ -213,16 +210,16 @@ pub async fn receive_activity(
let signer_id = signer.actor_id(&config.instance_url()); let signer_id = signer.actor_id(&config.instance_url());
let maybe_object_type = match (activity_type.as_str(), maybe_object_type) { let maybe_object_type = match activity_type.as_str() {
(ACCEPT, _) => { ACCEPT => {
require_actor_signature(&activity.actor, &signer_id)?; require_actor_signature(&activity.actor, &signer_id)?;
handle_accept_follow(config, db_client, activity).await? handle_accept_follow(config, db_client, activity).await?
}, },
(REJECT, _) => { REJECT => {
require_actor_signature(&activity.actor, &signer_id)?; require_actor_signature(&activity.actor, &signer_id)?;
handle_reject_follow(config, db_client, activity).await? handle_reject_follow(config, db_client, activity).await?
}, },
(CREATE, _) => { CREATE => {
let object: Object = serde_json::from_value(activity.object) let object: Object = serde_json::from_value(activity.object)
.map_err(|_| ValidationError("invalid object"))?; .map_err(|_| ValidationError("invalid object"))?;
let object_id = object.id.clone(); let object_id = object.id.clone();
@ -235,42 +232,42 @@ pub async fn receive_activity(
import_post(config, db_client, object_id, object_received).await?; import_post(config, db_client, object_id, object_received).await?;
Some(NOTE) Some(NOTE)
}, },
(ANNOUNCE, _) => { ANNOUNCE => {
require_actor_signature(&activity.actor, &signer_id)?; require_actor_signature(&activity.actor, &signer_id)?;
handle_announce(config, db_client, activity).await? handle_announce(config, db_client, activity).await?
}, },
(DELETE, _) => { DELETE => {
if signer_id != activity.actor { if signer_id != activity.actor {
// Ignore forwarded Delete() activities // Ignore forwarded Delete() activities
return Ok(()); return Ok(());
}; };
handle_delete(config, db_client, activity).await? handle_delete(config, db_client, activity).await?
}, },
(EMOJI_REACT | LIKE, _) => { EMOJI_REACT | LIKE => {
require_actor_signature(&activity.actor, &signer_id)?; require_actor_signature(&activity.actor, &signer_id)?;
handle_like(config, db_client, activity).await? handle_like(config, db_client, activity).await?
}, },
(FOLLOW, _) => { FOLLOW => {
require_actor_signature(&activity.actor, &signer_id)?; require_actor_signature(&activity.actor, &signer_id)?;
handle_follow(config, db_client, activity).await? handle_follow(config, db_client, activity).await?
}, },
(UNDO, _) => { UNDO => {
require_actor_signature(&activity.actor, &signer_id)?; require_actor_signature(&activity.actor, &signer_id)?;
handle_undo(config, db_client, activity).await? handle_undo(config, db_client, activity).await?
}, },
(UPDATE, _) => { UPDATE => {
require_actor_signature(&activity.actor, &signer_id)?; require_actor_signature(&activity.actor, &signer_id)?;
handle_update(config, db_client, activity).await? handle_update(config, db_client, activity).await?
}, },
(MOVE, _) => { MOVE => {
require_actor_signature(&activity.actor, &signer_id)?; require_actor_signature(&activity.actor, &signer_id)?;
handle_move_person(config, db_client, activity).await? handle_move_person(config, db_client, activity).await?
}, },
(ADD, _) => { ADD => {
require_actor_signature(&activity.actor, &signer_id)?; require_actor_signature(&activity.actor, &signer_id)?;
handle_add(config, db_client, activity).await? handle_add(config, db_client, activity).await?
}, },
(REMOVE, _) => { REMOVE => {
require_actor_signature(&activity.actor, &signer_id)?; require_actor_signature(&activity.actor, &signer_id)?;
handle_remove(config, db_client, activity).await? handle_remove(config, db_client, activity).await?
}, },