platypush/platypush/message/event/nextcloud.py

104 lines
3.6 KiB
Python

from datetime import datetime as dt
from typing import Optional
from platypush.message.event import Event
class NextCloudActivityEvent(Event):
"""
Event triggered when a new activity is detected on a NextCloud instance.
"""
def __init__(
self,
*args,
activity_id: int,
activity_type: str,
object_id: int,
object_type: str,
object_name: str,
app: str,
user: str,
subject: str,
message: str,
subject_rich: Optional[list] = None,
message_rich: Optional[list] = None,
objects: Optional[dict] = None,
link: Optional[str] = None,
icon: Optional[str] = None,
datetime: Optional[dt] = None,
**kwargs,
):
"""
:param activity_id: Activity ID.
:param activity_type: Activity type - can be ``file_created``,
``file_deleted``, ``file_changed``, ``file_restored``,
``file_shared``, ``file_unshared``, ``file_downloaded``, etc.
:param object_id: Object ID.
:param object_type: Object type - can be files, comment, tag, share,
etc.
:param object_name: Object name. In the case of files, it's the file
path relative to the user's root directory.
:param app: Application that generated the activity.
:param user: User that generated the activity.
:param subject: Activity subject, in plain text. For example, *You
created hd/test1.txt and hd/test2.txt*.
:param message: Activity message, in plain text.
:param subject_rich: Activity subject, in rich/structured format.
Example:
.. code-block:: json
[
"You created {file2} and {file1}",
{
"file1": {
"type": "file",
"id": "1234",
"name": "test1.txt",
"path": "hd/text1.txt",
"link": "https://cloud.example.com/index.php/f/1234"
},
"file2": {
"type": "file",
"id": "1235",
"name": "test2.txt",
"path": "hd/text2.txt",
"link": "https://cloud.example.com/index.php/f/1235"
}
}
]
:param message_rich: Activity message, in rich/structured format.
:param objects: Additional objects associated to the activity, in the
format ``{object_id: object}``. For example, if the activity
involves files, the ``objects`` dictionary will contain the mapping
of the involved files in the format ``{file_id: path}``.
:param link: Link to the main object of this activity. Example:
``https://cloud.example.com/index.php/files/apps/files/?dir=/hd&fileid=1234``
:param icon: URL of the icon associated to the activity.
:param datetime: Activity timestamp.
"""
super().__init__(
*args,
activity_id=activity_id,
activity_type=activity_type,
object_id=object_id,
object_type=object_type,
object_name=object_name,
app=app,
user=user,
subject=subject,
subject_rich=subject_rich,
message=message,
message_rich=message_rich,
objects=objects or {},
link=link,
icon=icon,
datetime=datetime,
**kwargs,
)
# vim:sw=4:ts=4:et: