Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def activity_to_atom(activity, xml_base=None, reader=True):
"""Converts a single ActivityStreams 1 activity to an Atom entry.
Kwargs are passed through to :func:`activities_to_atom`.
Args:
xml_base: the base URL, if any. Used in the top-level xml:base attribute.
reader: boolean, whether the output will be rendered in a feed reader.
Currently just includes location if True, not otherwise.
Returns:
unicode string with Atom XML
"""
_prepare_activity(activity, reader=reader)
return jinja_env.get_template(ENTRY_TEMPLATE).render(
activity=Defaulter(activity),
mimetypes=mimetypes,
VERBS_WITH_OBJECT=source.VERBS_WITH_OBJECT,
xml_base=xml_base,
)
def __hash__(self):
return super(Defaulter, self).__hash__() if self else None.__hash__()
request_url = host_url
_prepare_actor(actor)
for a in activities:
_prepare_activity(a, reader=reader)
updated = (util.get_first(activities[0], 'object', default={}).get('published', '')
if activities else '')
if actor is None:
actor = {}
return jinja_env.get_template(FEED_TEMPLATE).render(
actor=Defaulter(actor),
host_url=host_url,
items=[Defaulter(a) for a in activities],
mimetypes=mimetypes,
rels=rels or {},
request_url=request_url,
title=title or 'User feed for ' + source.Source.actor_name(actor),
updated=updated,
VERBS_WITH_OBJECT=source.VERBS_WITH_OBJECT,
xml_base=xml_base,
)
Returns:
unicode string with Atom XML
"""
# Strip query params from URLs so that we don't include access tokens, etc
host_url = (_remove_query_params(host_url) if host_url
else 'https://github.com/snarfed/granary')
if request_url is None:
request_url = host_url
for a in activities:
_prepare_activity(a, reader=reader)
if actor is None:
actor = {}
return jinja_env.get_template(FEED_TEMPLATE).render(
items=[Defaulter(**a) for a in activities],
host_url=host_url,
request_url=request_url,
xml_base=xml_base,
title=title or 'User feed for ' + source.Source.actor_name(actor),
updated=activities[0]['object'].get('published', '') if activities else '',
actor=Defaulter(**actor),
rels=rels or {},
VERBS_WITH_OBJECT=source.VERBS_WITH_OBJECT,
)
def activity_to_atom(activity, xml_base=None, reader=True):
"""Converts a single ActivityStreams 1 activity to an Atom entry.
Kwargs are passed through to :func:`activities_to_atom`.
Args:
xml_base: the base URL, if any. Used in the top-level xml:base attribute.
reader: boolean, whether the output will be rendered in a feed reader.
Currently just includes location if True, not otherwise.
Returns:
unicode string with Atom XML
"""
_prepare_activity(activity, reader=reader)
return jinja_env.get_template(ENTRY_TEMPLATE).render(
activity=Defaulter(**activity),
xml_base=xml_base,
VERBS_WITH_OBJECT=source.VERBS_WITH_OBJECT,
)
def __hash__(self):
return super(Defaulter, self).__hash__() if self else None.__hash__()
def __init__(self, **kwargs):
super(Defaulter, self).__init__(Defaulter, **{
k: (Defaulter(**v) if isinstance(v, dict) else v)
for k, v in kwargs.items()})
def __defaulter(cls, obj):
if isinstance(obj, dict):
return Defaulter(obj)
elif isinstance(obj, (tuple, list, set)):
return obj.__class__(cls.__defaulter(elem) for elem in obj)
else:
return obj
else 'https://github.com/snarfed/granary')
if request_url is None:
request_url = host_url
_prepare_actor(actor)
for a in activities:
_prepare_activity(a, reader=reader)
updated = (util.get_first(activities[0], 'object', default={}).get('published', '')
if activities else '')
if actor is None:
actor = {}
return jinja_env.get_template(FEED_TEMPLATE).render(
actor=Defaulter(actor),
host_url=host_url,
items=[Defaulter(a) for a in activities],
mimetypes=mimetypes,
rels=rels or {},
request_url=request_url,
title=title or 'User feed for ' + source.Source.actor_name(actor),
updated=updated,
VERBS_WITH_OBJECT=source.VERBS_WITH_OBJECT,
xml_base=xml_base,
)