Source code for masterblaster.team
from __future__ import annotations
import aiohttp
from typing import Optional
from datetime import datetime
from .player import Player
from .schedule import Schedule
BASE = "https://app.masterblaster.gg/api"
[docs]class Team:
def __init__(
self,
session: aiohttp.ClientSession = None,
id: Optional[str] = None,
ownerPlayerId: str = None,
organizationOwnerId: str = None,
name: Optional[str] = None,
tag: Optional[str] = None,
flag: Optional[str] = None,
shortHandle: Optional[str] = None,
avatarImageId: str = None,
bannerImageId: Optional[str] = None,
socialLinks: list = None,
gameId: str = None,
players: list[dict] = None, # Some weird metadata together with Player objects
createdAt: Optional[datetime] = None,
) -> None:
self.session: aiohttp.ClientSession = session
self.id: Optional[str] = id
self.owner_player_id: str = ownerPlayerId
self.organization_owner_id: str = organizationOwnerId
self.name: Optional[str] = name
self.tag: Optional[str] = tag
self.flag: Optional[str] = flag
self.short_handle: Optional[str] = shortHandle
self.avatar_image_id: str = avatarImageId
self.banner_image_id: Optional[str] = bannerImageId
self.social_links: list = socialLinks
self.game_id: str = gameId
self.players: list[Player] = [Player(**player["player"]) for player in players]
self.created_at: Optional[datetime] = createdAt
def __str__(self) -> str:
return self.name
[docs] async def get_schedule(self) -> Schedule:
"""
Returns the schedule for the team
Parameters
----------
None
Returns
-------
Schedule
"""
r = await self.session.get(
f"{BASE}/match_schedule/player?includeFinished=false"
)
match r.status:
case 200:
schedule = await r.json()
matches = []
for match in schedule:
for team in match["teams"]:
if team["team"]["id"] == self.id:
matches.append(match)
return Schedule(matches)
case _:
raise ValueError(
f"Unable to fetch schedule for: {self} code: {r.status} err: {await r.text()}"
)