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)