From ee3e87a6ec19878d56e8f386b20c58e4d9b211b3 Mon Sep 17 00:00:00 2001 From: Dmitrii Morozov Date: Tue, 7 May 2024 17:15:25 +0200 Subject: Modules --- fortnite_client.py | 108 ----------------------------------------------------- 1 file changed, 108 deletions(-) delete mode 100755 fortnite_client.py (limited to 'fortnite_client.py') diff --git a/fortnite_client.py b/fortnite_client.py deleted file mode 100755 index 16b2652..0000000 --- a/fortnite_client.py +++ /dev/null @@ -1,108 +0,0 @@ -#!/usr/bin/python3 - -import fortnitepy -import json -import os -import typing -from device_auth import DeviceAuth -from app_types import * - -__fortnite_account_key__ = 'fornite-account-key' - -# Intefaces for events -class FriendPresenceObserver: - async def update(self, display_name: str, playing: bool, party_size: int) -> None: - pass - -class ClientInitObserver: - async def on_event(self, fortnite_client) -> None: - pass - -class FortniteClient(fortnitepy.Client): - - __device_auth: DeviceAuth - __friend_presence_observer: FriendPresenceObserver - __client_init_observer: ClientInitObserver - - def __init__(self, client_init_observer: ClientInitObserver, friend_presence_observer: FriendPresenceObserver): - self.__device_auth = DeviceAuth() - self.__client_init_observer = client_init_observer - self.__friend_presence_observer = friend_presence_observer - if self.__device_auth.device_auth_file_exists(): - self.__auth_device_auth() - else: - self.__auth_authorization_code() - - async def get_friends(self) -> typing.List[User]: - return [User.from_fortnite_friend(friend) for friend in self.friends] - - async def find_user(self, display_name: str): - user: fortnitepy.User = await self.fetch_user_by_display_name(display_name) - return User.from_fortnite_friend(user) - - def __auth_authorization_code(self): - code = input("Enter authorization code (https://www.epicgames.com/id/api/redirect?clientId=3446cd72694c4a4485d81b77adbb2141&responseType=code):") - super().__init__( - auth=fortnitepy.AuthorizationCodeAuth( - code = code - ) - ) - - def __auth_device_auth(self): - device_auth_details = self.__device_auth.get_device_auth_details().get(__fortnite_account_key__, {}) - super().__init__( - auth=fortnitepy.DeviceAuth( - **device_auth_details - ) - ) - - # Generate auth details if none were supplied yet - async def __generate_auth_details(self): - if not self.__device_auth.device_auth_file_exists(): - device_auth_data = await self.auth.generate_device_auth() - details = { - 'device_id': device_auth_data['deviceId'], - 'account_id': device_auth_data['accountId'], - 'secret': device_auth_data['secret'], - } - self.auth.__dict__.update(details) - self.dispatch_event( - 'device_auth_generate', - details, - __fortnite_account_key__ - ) - - async def event_device_auth_generate(self, details, email): - self.__device_auth.store_device_auth_details(email, details) - - async def event_ready(self): - await self.__generate_auth_details() - await self.__client_init_observer.on_event(self) - - async def event_friend_request(self, request: typing.Union[fortnitepy.friend.IncomingPendingFriend, fortnitepy.friend.OutgoingPendingFriend]): - await IncomingFriendRequestEvent.on_event(request) - - async def event_friend_presence(self, before, after: fortnitepy.Presence): - await FriendPresenceEvent.on_event(before, after, self.__friend_presence_observer) - -class FriendPresenceEvent: - async def on_event(before, after: fortnitepy.Presence, friend_presence_observer: FriendPresenceObserver): - if before is not None and after is not None: - if before.playing != after.playing: - print('FriendPresence changed for user {}, before {}, after {}'.format(after.friend.display_name, before.playing, after.playing)) - party_size: int = 1 - if after.has_properties: - party: fortnitepy.PresenceParty = after.party - if party is not None and party.playercount is not None: - party_size = int(party.playercount) - await friend_presence_observer.update( - after.friend.display_name, - after.playing, - party_size) - -class IncomingFriendRequestEvent: - async def on_event(request: typing.Union[fortnitepy.friend.IncomingPendingFriend, fortnitepy.friend.OutgoingPendingFriend]): - if isinstance(request, fortnitepy.friend.IncomingPendingFriend): - incoming_request = typing.cast(fortnitepy.friend.IncomingPendingFriend, request) - print('Accepting friend request from {}'.format(incoming_request.display_name)) - #await incoming_request.accept() \ No newline at end of file -- cgit v1.2.3