Source code for redditwarp.models.user_relationship
from __future__ import annotations
from typing import Any, Mapping, Optional
from functools import cached_property
from datetime import datetime, timezone
[docs]class UserRelationship:
@cached_property
def added_at(self) -> datetime:
"""Datetime object of when the relationship was created."""
return datetime.fromtimestamp(self.added_ut, timezone.utc)
def __init__(self, d: Mapping[str, Any]) -> None:
self.d: Mapping[str, Any] = d
("")
full_id36: str = d['id']
_, _, id36 = full_id36.partition('_')
self.id36: str = id36
("""
User ID as a base 36 number.
""")
self.idn: int = int(id36, 36)
("""
User ID.
""")
self.id: int = self.idn
("""
Same as :attr:`idn`.
""")
self.name: str = d['name']
("""
Username.
""")
#self.rel_id: str = d['rel_id']
self.added_ut: int = int(d['date'])
("""
UNIX timestamp of when the relationship was created.
""")
[docs]class FriendRelationship(UserRelationship):
def __init__(self, d: Mapping[str, Any]) -> None:
super().__init__(d)
# Need Reddit Premium to test this
# self.note: str = d['note'] or ''
[docs]class BannedSubredditUserRelationship(UserRelationship):
def __init__(self, d: Mapping[str, Any]) -> None:
super().__init__(d)
self.days_remaining: Optional[int] = d['days_left']
("""
Number of days until the ban is lifted.
Value `None` if the ban is permanent.
""")
self.reason: str = d['note']
("""
Ban reason.
""")