2021-02-18 01:58:29 +13:00
|
|
|
import json
|
|
|
|
from logging import getLogger
|
|
|
|
|
2021-05-29 06:34:34 +12:00
|
|
|
from PyQt5.QtCore import pyqtSignal, QUrl
|
|
|
|
from PyQt5.QtGui import QDesktopServices
|
|
|
|
from PyQt5.QtWidgets import QWidget
|
2021-03-19 00:45:59 +13:00
|
|
|
|
2021-03-17 03:12:37 +13:00
|
|
|
from custom_legendary.core import LegendaryCore
|
2021-05-29 06:34:34 +12:00
|
|
|
from rare.ui.components.dialogs.login.browser_login import Ui_BrowserLogin
|
2021-02-18 01:58:29 +13:00
|
|
|
|
|
|
|
logger = getLogger("BrowserLogin")
|
|
|
|
|
2021-02-18 22:22:15 +13:00
|
|
|
|
2021-05-29 06:34:34 +12:00
|
|
|
class BrowserLogin(QWidget, Ui_BrowserLogin):
|
2021-02-18 01:58:29 +13:00
|
|
|
success = pyqtSignal()
|
2021-05-29 06:34:34 +12:00
|
|
|
changed = pyqtSignal()
|
|
|
|
login_url = "https://www.epicgames.com/id/login?redirectUrl=https%3A%2F%2Fwww.epicgames.com%2Fid%2Fapi%2Fredirect"
|
2021-02-18 22:22:15 +13:00
|
|
|
|
2021-05-29 06:34:34 +12:00
|
|
|
def __init__(self, core: LegendaryCore, parent=None):
|
|
|
|
super(BrowserLogin, self).__init__(parent=parent)
|
|
|
|
self.setupUi(self)
|
2021-02-18 01:58:29 +13:00
|
|
|
|
2021-05-29 06:34:34 +12:00
|
|
|
self.core = core
|
2021-02-18 01:58:29 +13:00
|
|
|
|
2021-06-15 18:02:18 +12:00
|
|
|
self.open_button.clicked.connect(self.open_browser)
|
2021-05-29 06:34:34 +12:00
|
|
|
self.sid_edit.textChanged.connect(self.changed.emit)
|
2021-02-18 01:58:29 +13:00
|
|
|
|
2021-05-29 06:34:34 +12:00
|
|
|
def is_valid(self):
|
|
|
|
return len(self.sid_edit.text()) == 32
|
2021-02-18 01:58:29 +13:00
|
|
|
|
2021-05-29 06:34:34 +12:00
|
|
|
def do_login(self):
|
|
|
|
self.status_label.setText(self.tr("Logging in..."))
|
|
|
|
sid = self.sid_edit.text()
|
2021-02-18 01:58:29 +13:00
|
|
|
# when the text copied
|
|
|
|
if sid.startswith("{") and sid.endswith("}"):
|
|
|
|
sid = json.loads(sid)["sid"]
|
2021-05-29 06:34:34 +12:00
|
|
|
try:
|
|
|
|
token = self.core.auth_sid(sid)
|
|
|
|
if self.core.auth_code(token):
|
|
|
|
logger.info(f"Successfully logged in as {self.core.lgd.userdata['displayName']}")
|
|
|
|
self.success.emit()
|
|
|
|
else:
|
|
|
|
self.status_label.setText(self.tr("Login failed."))
|
|
|
|
logger.warning("Failed to login through browser")
|
|
|
|
except Exception as e:
|
|
|
|
logger.warning(e)
|
2021-06-15 18:02:18 +12:00
|
|
|
|
|
|
|
def open_browser(self):
|
|
|
|
QDesktopServices.openUrl(QUrl(self.login_url))
|