def player_image_path(self, league: Union[str, LeagueData], player_id: str) -> str: league_id = self._get_league_id(league) r = self._do_get("/leagues/{}/players/{}".format(league_id, player_id), True) if r.status_code == 200: p = r.json() if 'profileBig' in p: return p['profileBig'] if 'profile' in p: return p['profile'] raise KickbaseException() else: raise KickbaseException()
def team_players(self, team_id: str) -> [Player]: r = self._do_get("/competition/teams/{}/players".format(team_id)) if r.status_code == 200: return [Player(v) for v in r.json()["p"]] else: raise KickbaseException()
def _get_league_id(self, league: any): if isinstance(league, str): return league if isinstance(league, LeagueData): return league.id raise KickbaseException( "league must be either type of str or LeagueData")
def search_player(self, search_query: str) -> [Player]: r = self._do_get("/competition/search?t={}".format(search_query)) if r.status_code == 200: return [Player(v) for v in r.json()["p"]] else: raise KickbaseException()
def player_stats(self, player: Union[str, Player]) -> PlayerStats: player_id = self._get_player_id(player) r = self._do_get("/players/{}/points".format(player_id), True) if r.status_code == 200: return PlayerStats(r.json()) else: raise KickbaseException()
def player_info(self, league: Union[str, LeagueData], player_id: str) -> Player: league_id = self._get_league_id(league) r = self._do_get("/leagues/{}/players/{}".format(league_id, player_id), True) if r.status_code == 200: return Player(r.json()) else: raise KickbaseException()
def login(self, username: str, password: str) -> (User, [LeagueData]): data = { "email": username, "password": password, "ext": False } r = self._do_post("/user/login", data, False) if r.status_code == 200: j = r.json() self.token = j["token"] self.token_expire = parse_date(j["tokenExp"]) self._username = username self._password = password self.user = User(j["user"]) league_data = [LeagueData(d) for d in j["leagues"]] return self.user, league_data elif r.status_code == 401: raise KickbaseLoginException() else: raise KickbaseException()
def chat_messages(self, league: Union[str, LeagueData], page_size: int = 30, next_page_token: str = None) -> ( [ChatItem], str): if self.google_identity_toolkit_api_key is None: return [] league_id = self._get_league_id(league) if not self._is_token_valid(): self.login(self._username, self._password) if not self._is_firebase_token_valid(): self._update_firebase_token() headers = { "Content-Type": "application/json", "Accept": "application/json", "Authorization": "Bearer {}".format(self.firebase_token) } if next_page_token is None: r = requests.get(self._url_for_firestore("/chat/{}/messages?pageSize={}".format(league_id, page_size)), headers=headers) else: r = requests.get(self._url_for_firestore( "/chat/{}/messages?pageSize={}&pageToken={}".format(league_id, page_size, next_page_token)), headers=headers) if r.status_code == 200: j = r.json() docs = j["documents"] npt = None if "nextPageToken" in j: npt = j["nextPageToken"] return [ChatItem(d) for d in docs], npt else: raise KickbaseException()
def _get_feed_item_id(self, feed_item: any): if isinstance(feed_item, str): return feed_item if isinstance(feed_item, FeedItem): return feed_item.id raise KickbaseException( "feed_item must be either type of str or FeedItem")
def top_25_players(self) -> [Player]: r = self._do_get("/competition/best?position=0") if r.status_code == 200: return [Player(v) for v in r.json()["p"]] else: raise KickbaseException()
def __init__(self, params: dict): try: if params["default"] == True: self.MIN_PROFIT = self.DEFAULT["min_profit"] else: self.MIN_PROFIT = params["min_profit"] except: raise KickbaseException()
def _get_player_id(self, player: any): if isinstance(player, str): return player if isinstance(player, Player): return player.id if isinstance(player, MarketPlayer): return player.id raise KickbaseException("player must be either type of str, Player or MarketPlayer")
def leagues(self) -> [LeagueData]: r = self._do_get("/leagues/", True) if r.status_code == 200: j = r.json() return [LeagueData(d) for d in j["leagues"]] else: raise KickbaseException()
def league_current_gift(self, league: Union[str, LeagueData]) -> Gift: league_id = self._get_league_id(league) r = self._do_get("/leagues/{}/currentgift".format(league_id), True) if r.status_code == 200: return Gift(r.json()) else: raise KickbaseException()
def league_stats(self, league: Union[str, LeagueData]) -> LeagueStatsResponse: league_id = self._get_league_id(league) r = self._do_get("/leagues/{}/stats".format(league_id), True) if r.status_code == 200: return LeagueStatsResponse(r.json()) else: raise KickbaseException()
def league_users(self, league: Union[str, LeagueData]) -> [LeagueUserData]: league_id = self._get_league_id(league) r = self._do_get("/leagues/{}/users".format(league_id), True) if r.status_code == 200: return [LeagueUserData(d) for d in r.json()["users"]] else: raise KickbaseException()
def league_feed(self, start_index: int, league: Union[str, LeagueData]) -> [FeedItem]: league_id = self._get_league_id(league) r = self._do_get("/leagues/{}/feed?start={}".format(league_id, start_index), True) if r.status_code == 200: return [FeedItem(v) for v in r.json()["items"]] else: raise KickbaseException()
def league_info(self, league: Union[str, LeagueData]) -> LeagueInfo: league_id = self._get_league_id(league) r = self._do_get("/leagues/{}/info".format(league_id), True) if r.status_code == 200: return LeagueInfo(r.json()) else: raise KickbaseException()
def market(self, league: Union[str, LeagueData]) -> Market: league_id = self._get_league_id(league) r = self._do_get("/leagues/{}/market".format(league_id), True) if r.status_code == 200: return Market(r.json()) else: raise KickbaseException()
def line_up(self, league: Union[str, LeagueData]) -> LineUp: league_id = self._get_league_id(league) r = self._do_get("/leagues/{}/lineup".format(league_id), True) if r.status_code == 200: return LineUp(r.json()) else: raise KickbaseException()
def league_player_marketvalue_history(self, league: Union[str, LeagueData], player: Union[str, Player]) -> PlayerMarketValueHistory: league_id = self._get_league_id(league) player_id = self._get_player_id(player) r = self._do_get("/leagues/{}/players/{}/stats".format(league_id, player_id), True) if r.status_code == 200: return PlayerMarketValueHistory(r.json()) else: raise KickbaseException()
def decline_offer(self, offer_id: str, player: Union[str, Player, MarketPlayer], league: Union[str, LeagueData]): player_id = self._get_player_id(player) league_id = self._get_league_id(league) r = self._do_post("/leagues/{}/market/{}/offers/{}/decline".format(league_id, player_id, offer_id), {}, True) if r.status_code == 200: return else: raise KickbaseException()
def remove_from_market(self, player: Union[str, Player, MarketPlayer], league: Union[str, LeagueData]): player_id = self._get_player_id(player) league_id = self._get_league_id(league) r = self._do_delete("/leagues/{}/market/{}".format(league_id, player_id), True) if r.status_code == 200: return else: raise KickbaseException()
def league_user_profile(self, league: Union[str, LeagueData], user: Union[str, User]) -> LeagueUserProfile: league_id = self._get_league_id(league) user_id = self._get_user_id(user) r = self._do_get("/leagues/{}/users/{}/profile".format(league_id, user_id), True) if r.status_code == 200: return LeagueUserProfile(r.json()) else: raise KickbaseException()
def league_user_players(self, league: Union[str, LeagueData], user: Union[str, User], match_day: int = 0) -> [ Player]: league_id = self._get_league_id(league) user_id = self._get_user_id(user) r = self._do_get("/leagues/{}/users/{}/players?matchDay={}".format(league_id, user_id, match_day), True) if r.status_code == 200: return [Player(v) for v in r.json()["players"]] else: raise KickbaseException()
def league_players_feed(self, league: Union[str, LeagueData], player: Union[str, Player]) -> PlayerFeed: league_id = self._get_league_id(league) player_id = self._get_player_id(player) r = self._do_get("/leagues/{}/players/{}/feed".format(league_id, player_id), True) if r.status_code == 200: #return PlayerFeed(r.json()) TBD return r.json() else: raise KickbaseException()
def chat_token(self) -> str: if not self._is_token_valid(): self.login(self._username, self._password) r = self._do_post("/user/refreshchattoken", {}, True) if r.status_code == 200: j = r.json() return j["token"] else: raise KickbaseException()
def league_feed_comments(self, league: Union[str, LeagueData], feed_item: Union[str, FeedItem]) -> [ FeedItemComment]: league_id = self._get_league_id(league) feed_item_id = self._get_feed_item_id(feed_item) r = self._do_get("/leagues/{}/feed/{}/comments".format(league_id, feed_item_id), True) if r.status_code == 200: return [FeedItemComment(v) for v in r.json()["comments"]] else: raise KickbaseException()
def league_collect_gift(self, league: Union[str, LeagueData]) -> True: league_id = self._get_league_id(league) r = self._do_post("/leagues/{}/collectgift".format(league_id), {}, True) if r.status_code == 200: return True elif r.status_code == 400: return False else: raise KickbaseException()
def post_chat_message(self, message: str, league: Union[str, LeagueData]): if self.google_identity_toolkit_api_key is None: return league_id = self._get_league_id(league) if not self._is_token_valid(): self.login(self._username, self._password) if not self._is_firebase_token_valid(): self._update_firebase_token() headers = { "Content-Type": "application/json", "Accept": "application/json", "Authorization": "Bearer {}".format(self.firebase_token) } data = { "fields": { "userId": { "stringValue": self.user.id }, "message": { "stringValue": message }, "leagueId": { "stringValue": league_id }, "date": { "stringValue": date_to_string(datetime.utcnow()) }, "username": { "stringValue": self.user.name }, "seenBy": { "arrayValue": { "values": [{ "stringValue": self.user.id }] } } } } r = requests.post(self._url_for_firestore( "/chat/{}/messages".format(league_id)), data=json.dumps(data), headers=headers) if r.status_code == 200: return else: raise KickbaseException()