How to use the federation.entities.activitypub.entities.ActivitypubRetraction function in federation

To help you get started, we’ve selected a few federation examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github jaywink / federation / federation / entities / activitypub / mappers.py View on Github external
def element_to_objects(payload: Dict) -> List:
    """
    Transform an Element to a list of entities.
    """
    cls = None
    entities = []
    is_object = True if payload.get('type') in OBJECTS else False
    if payload.get('type') == "Delete":
        cls = ActivitypubRetraction
    elif payload.get('type') == "Undo":
        if isinstance(payload.get('object'), dict):
            cls = UNDO_MAPPINGS.get(payload["object"]["type"])
    elif isinstance(payload.get('object'), dict) and payload["object"].get('type'):
        if payload["object"]["type"] == "Note" and payload["object"].get("inReplyTo"):
            cls = ActivitypubComment
        else:
            cls = MAPPINGS.get(payload["object"]["type"])
    else:
        cls = MAPPINGS.get(payload.get('type'))
    if not cls:
        return []

    transformed = transform_attributes(payload, cls, is_object=is_object)
    entity = cls(**transformed)
    # Add protocol name
github jaywink / federation / federation / entities / activitypub / mappers.py View on Github external
OBJECTS = (
    "Application",
    "Article",
    "Group",
    "Image",
    "Note",
    "Organization",
    "Page",
    "Person",
    "Service",
)

UNDO_MAPPINGS = {
    "Follow": ActivitypubFollow,
    "Announce": ActivitypubRetraction,
}


def element_to_objects(payload: Dict) -> List:
    """
    Transform an Element to a list of entities.
    """
    cls = None
    entities = []
    is_object = True if payload.get('type') in OBJECTS else False
    if payload.get('type') == "Delete":
        cls = ActivitypubRetraction
    elif payload.get('type') == "Undo":
        if isinstance(payload.get('object'), dict):
            cls = UNDO_MAPPINGS.get(payload["object"]["type"])
    elif isinstance(payload.get('object'), dict) and payload["object"].get('type'):
github jaywink / federation / federation / entities / activitypub / mappers.py View on Github external
from federation.entities.activitypub.entities import (
    ActivitypubFollow, ActivitypubProfile, ActivitypubAccept, ActivitypubPost, ActivitypubComment,
    ActivitypubRetraction, ActivitypubShare, ActivitypubImage)
from federation.entities.base import Follow, Profile, Accept, Post, Comment, Retraction, Share, Image
from federation.entities.mixins import BaseEntity
from federation.types import UserType, ReceiverVariant

logger = logging.getLogger("federation")


MAPPINGS = {
    "Accept": ActivitypubAccept,
    "Announce": ActivitypubShare,
    "Application": ActivitypubProfile,
    "Article": ActivitypubPost,
    "Delete": ActivitypubRetraction,
    "Follow": ActivitypubFollow,  # Technically not correct, but for now we support only following profiles
    "Group": ActivitypubProfile,
    "Image": ActivitypubImage,
    "Note": ActivitypubPost,
    "Organization": ActivitypubProfile,
    "Page": ActivitypubPost,
    "Person": ActivitypubProfile,
    "Service": ActivitypubProfile,
}

OBJECTS = (
    "Application",
    "Article",
    "Group",
    "Image",
    "Note",
github jaywink / federation / federation / entities / activitypub / mappers.py View on Github external
def transform_attribute(
        key: str, value: Union[str, Dict, int], transformed: Dict, cls, is_object: bool, payload: Dict,
) -> None:
    if value is None:
        value = ""
    if key == "id":
        if is_object:
            if cls == ActivitypubRetraction:
                transformed["target_id"] = value
                transformed["entity_type"] = "Object"
            else:
                transformed["id"] = value
        elif cls in (ActivitypubProfile, ActivitypubShare):
            transformed["id"] = value
        else:
            transformed["activity_id"] = value
    elif key == "actor":
        transformed["actor_id"] = value
    elif key == "attributedTo" and is_object:
        transformed["actor_id"] = value
    elif key in ("content", "source"):
        if payload.get('source') and isinstance(payload.get("source"), dict) and \
                payload.get('source').get('mediaType') == "text/markdown":
            transformed["_media_type"] = "text/markdown"