forked from platypush/platypush
92 lines
2.5 KiB
Python
92 lines
2.5 KiB
Python
import os
|
|
from typing import Optional
|
|
|
|
from platypush.message.event import Event
|
|
|
|
|
|
class InotifyEvent(Event):
|
|
"""
|
|
Generic super-class for inotify events.
|
|
"""
|
|
def __init__(self, path: str, resource: Optional[str] = None, resource_type: Optional[str] = None,
|
|
*args, **kwargs):
|
|
"""
|
|
:param path: Monitored path.
|
|
:param resource: File/resource name.
|
|
:param resource_type: INotify type of the resource, if available.
|
|
"""
|
|
kwargs['full_path'] = os.path.join(path, resource) if resource else path
|
|
super().__init__(*args, path=path, resource=resource,
|
|
resource_type=self._resource_type_code_to_name(resource_type), **kwargs)
|
|
|
|
@staticmethod
|
|
def _resource_type_code_to_name(resource_type: Optional[str] = None) -> Optional[str]:
|
|
if resource_type == 'IN_ISDIR':
|
|
return 'directory'
|
|
|
|
return resource_type or 'file'
|
|
|
|
|
|
class InotifyOpenEvent(InotifyEvent):
|
|
"""
|
|
Event triggered when a monitored resource is opened.
|
|
"""
|
|
|
|
|
|
class InotifyCloseEvent(InotifyEvent):
|
|
"""
|
|
Event triggered when a monitored resource is closed.
|
|
"""
|
|
|
|
|
|
class InotifyAccessEvent(InotifyEvent):
|
|
"""
|
|
Event triggered when a monitored resource is accessed.
|
|
"""
|
|
|
|
|
|
class InotifyCreateEvent(InotifyEvent):
|
|
"""
|
|
Event triggered when a monitored resource is created.
|
|
"""
|
|
|
|
|
|
class InotifyDeleteEvent(InotifyEvent):
|
|
"""
|
|
Event triggered when a monitored resource is deleted.
|
|
"""
|
|
|
|
|
|
class InotifyModifyEvent(InotifyEvent):
|
|
"""
|
|
Event triggered when a monitored resource is modified.
|
|
"""
|
|
|
|
|
|
class InotifyMovedEvent(InotifyEvent):
|
|
"""
|
|
Event triggered when a resource in a monitored path is moved.
|
|
"""
|
|
def __init__(self, path: str, old: Optional[str] = None, new: Optional[str] = None, *args, **kwargs):
|
|
"""
|
|
:param path: Monitored path.
|
|
:param old: Old name.
|
|
:param new: New name.
|
|
"""
|
|
super().__init__(path=path, old=old, new=new, *args, **kwargs)
|
|
|
|
|
|
class InotifyPermissionsChangeEvent(InotifyEvent):
|
|
"""
|
|
Event triggered when the permissions on a monitored resource are changed.
|
|
"""
|
|
def __init__(self, path: str, umask: int, resource: Optional[str] = None, *args, **kwargs):
|
|
"""
|
|
:param path: Monitored path.
|
|
:param umask: New umask.
|
|
:param resource: File/resource name.
|
|
"""
|
|
super().__init__(path=path, resource=resource, umask=umask, *args, **kwargs)
|
|
|
|
|
|
# vim:sw=4:ts=4:et:
|