Source code for hackthebox.team

from . import htb

from typing import TYPE_CHECKING, cast, Optional
if TYPE_CHECKING:
    from .user import User


[docs]class Team(htb.HTBObject): """ The class representing Hack The Box teams Attributes: name: The name of the Team points: The Team's total points motto: The Team motto description: The Team description country_name: The name of the country the Team is based in avatar_url: The relative URL of the Tean's avatar twitter: The Team's Twitter account facebook: The Team's Facebook account discord: The Team's Discord public: Whether the Team is publicly visible can_delete_avatar: Whether the active User can delete the avatar is_respected: Whether the active User has respected the Team join_request_sent: Whether the active User has sent a request to join the Team """ name: str _detailed_attributes = ('points', 'motto', 'description', 'country_name', 'avatar_url', 'cover_image_url', 'twitter', 'facebook', 'discord', 'public', 'can_delete_avatar', 'captain', 'is_respected', 'join_request_sent') points: int motto: str description: str country_name: str avatar_url: str cover_image_url: str twitter: str facebook: str discord: str public: bool can_delete_avatar: bool # noinspection PyUnresolvedReferences _captain: Optional["User"] = None is_respected: Optional[bool] = None join_request_sent: Optional[bool] = None _ranking: Optional[int] = None _captain_id: int def __repr__(self): return f"<Team '{self.name}'>" def __init__(self, data: dict, client: htb.HTBClient, summary: bool = False): self._client = client self._detailed_func = client.get_team # type: ignore self.id = data['id'] self.name = data['name'] if not summary: self.points = data['points'] self.motto = data['motto'] self.description = data['description'] self.country_name = data['country_name'] self.avatar_url = data['avatar_url'] self.cover_image_url = data['cover_image_url'] self.twitter = data['twitter'] self.facebook = data['facebook'] self.discord = data['facebook'] self.public = data['public'] self.can_delete_avatar = data['can_delete_avatar'] self._captain_id = data['captain']['id'] self.is_respected = data['is_respected'] self.join_request_sent = data['join_request_sent'] else: self._is_summary = True @property def ranking(self) -> int: """Retrieve the global ranking of the team Returns: """ if not self._ranking: data = cast(dict, self._client.do_request(f"team/stats/owns/{self.id}")) self._ranking = data['rank'] return cast(int, self._ranking) # noinspection PyUnresolvedReferences @property def captain(self) -> "User": from .user import User if not self._captain: self._captain = self._client.get_user(self._captain_id) return cast(User, self._captain)