mirror of https://gitlab.com/bashrc2/epicyon
Receive actor status activities
parent
783c598c26
commit
eeadff2425
15
inbox.py
15
inbox.py
|
@ -118,6 +118,7 @@ from threads import begin_thread
|
||||||
from reading import store_book_events
|
from reading import store_book_events
|
||||||
from inbox_receive import inbox_update_index
|
from inbox_receive import inbox_update_index
|
||||||
from inbox_receive import receive_edit_to_post
|
from inbox_receive import receive_edit_to_post
|
||||||
|
from inbox_receive import receive_actor_status
|
||||||
from inbox_receive import receive_like
|
from inbox_receive import receive_like
|
||||||
from inbox_receive import receive_reaction
|
from inbox_receive import receive_reaction
|
||||||
from inbox_receive import receive_zot_reaction
|
from inbox_receive import receive_zot_reaction
|
||||||
|
@ -320,7 +321,7 @@ def inbox_message_has_params(message_json: {}) -> bool:
|
||||||
allowed_without_to_param = ['Like', 'EmojiReact',
|
allowed_without_to_param = ['Like', 'EmojiReact',
|
||||||
'Follow', 'Join', 'Request',
|
'Follow', 'Join', 'Request',
|
||||||
'Accept', 'Capability', 'Undo',
|
'Accept', 'Capability', 'Undo',
|
||||||
'Move']
|
'Move', 'sm:ActorStatus', 'ActorStatus']
|
||||||
if message_json['type'] not in allowed_without_to_param:
|
if message_json['type'] not in allowed_without_to_param:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
@ -343,7 +344,7 @@ def inbox_permitted_message(domain: str, message_json: {},
|
||||||
|
|
||||||
always_allowed_types = (
|
always_allowed_types = (
|
||||||
'Follow', 'Join', 'Like', 'EmojiReact', 'Delete', 'Announce', 'Move',
|
'Follow', 'Join', 'Like', 'EmojiReact', 'Delete', 'Announce', 'Move',
|
||||||
'QuoteRequest'
|
'QuoteRequest', 'sm:ActorStatus', 'ActorStatus'
|
||||||
)
|
)
|
||||||
if message_json['type'] not in always_allowed_types:
|
if message_json['type'] not in always_allowed_types:
|
||||||
if not has_object_dict(message_json):
|
if not has_object_dict(message_json):
|
||||||
|
@ -1857,6 +1858,16 @@ def _inbox_after_initial(server, inbox_start_time,
|
||||||
|
|
||||||
handle_name = handle.split('@')[0]
|
handle_name = handle.split('@')[0]
|
||||||
|
|
||||||
|
if receive_actor_status(base_dir, person_cache, message_json,
|
||||||
|
debug):
|
||||||
|
if debug:
|
||||||
|
print('DEBUG: ActorStatus from ' + actor)
|
||||||
|
fitness_performance(inbox_start_time, server.fitness,
|
||||||
|
'INBOX', '_receive_actor_status',
|
||||||
|
debug)
|
||||||
|
inbox_start_time = time.time()
|
||||||
|
return False
|
||||||
|
|
||||||
if receive_like(recent_posts_cache,
|
if receive_like(recent_posts_cache,
|
||||||
session, handle,
|
session, handle,
|
||||||
base_dir, http_prefix,
|
base_dir, http_prefix,
|
||||||
|
|
|
@ -52,6 +52,7 @@ from utils import get_url_from_post
|
||||||
from utils import remove_html
|
from utils import remove_html
|
||||||
from utils import get_full_domain
|
from utils import get_full_domain
|
||||||
from utils import get_user_paths
|
from utils import get_user_paths
|
||||||
|
from cache import get_person_from_cache
|
||||||
from cache import get_actor_public_key_from_id
|
from cache import get_actor_public_key_from_id
|
||||||
from cache import store_person_in_cache
|
from cache import store_person_in_cache
|
||||||
from cache import get_person_pub_key
|
from cache import get_person_pub_key
|
||||||
|
@ -1085,6 +1086,39 @@ def receive_like(recent_posts_cache: {},
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def receive_actor_status(base_dir: str, person_cache: {}, message_json: {},
|
||||||
|
debug: bool) -> bool:
|
||||||
|
"""Receives an sm:ActorStatus activity within the POST section
|
||||||
|
of HTTPServer
|
||||||
|
https://codeberg.org/fediverse/fep/src/branch/main/fep/82f6/fep-82f6.md
|
||||||
|
"""
|
||||||
|
if message_json['type'] not in ('sm:ActorStatus', 'ActorStatus'):
|
||||||
|
return False
|
||||||
|
if 'content' in message_json:
|
||||||
|
return False
|
||||||
|
if not isinstance(message_json['content'], str):
|
||||||
|
return False
|
||||||
|
if not has_actor(message_json, debug):
|
||||||
|
return False
|
||||||
|
actor_url = get_actor_from_post(message_json)
|
||||||
|
if not actor_url:
|
||||||
|
return False
|
||||||
|
if not has_users_path(actor_url):
|
||||||
|
if debug:
|
||||||
|
print('DEBUG: "users" or "profile" missing from actor status in ' +
|
||||||
|
str(message_json))
|
||||||
|
return False
|
||||||
|
actor_json = get_person_from_cache(base_dir, actor_url, person_cache)
|
||||||
|
if not actor_json:
|
||||||
|
return False
|
||||||
|
actor_json['sm:status'] = message_json
|
||||||
|
allow_write_to_file = True
|
||||||
|
store_person_in_cache(base_dir, actor_url,
|
||||||
|
actor_json, person_cache,
|
||||||
|
allow_write_to_file)
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
def receive_reaction(recent_posts_cache: {},
|
def receive_reaction(recent_posts_cache: {},
|
||||||
session, handle: str, base_dir: str,
|
session, handle: str, base_dir: str,
|
||||||
http_prefix: str, domain: str, port: int,
|
http_prefix: str, domain: str, port: int,
|
||||||
|
|
|
@ -497,7 +497,7 @@ def post_message_to_outbox(session, translate: {},
|
||||||
permitted_outbox_types = (
|
permitted_outbox_types = (
|
||||||
'Create', 'Announce', 'Like', 'EmojiReact', 'Follow', 'Undo',
|
'Create', 'Announce', 'Like', 'EmojiReact', 'Follow', 'Undo',
|
||||||
'Update', 'Add', 'Remove', 'Block', 'Delete', 'Skill', 'Ignore',
|
'Update', 'Add', 'Remove', 'Block', 'Delete', 'Skill', 'Ignore',
|
||||||
'Move', 'Edition'
|
'Move', 'Edition', 'sm:ActorStatus', 'ActorStatus'
|
||||||
)
|
)
|
||||||
if message_json['type'] not in permitted_outbox_types:
|
if message_json['type'] not in permitted_outbox_types:
|
||||||
if debug:
|
if debug:
|
||||||
|
|
Loading…
Reference in New Issue