mirror of
https://github.com/fishyboteso/fishyboteso.git
synced 2024-08-30 18:32:13 +00:00
a12c397357
removed restart from debug options (fishy should always exit safely) added debug logs for when systems start and stop update button from tool bar now opens update dialogue correctly
176 lines
4.4 KiB
Python
176 lines
4.4 KiB
Python
import logging
|
|
|
|
import requests
|
|
from whatsmyip.ip import get_ip
|
|
from whatsmyip.providers import GoogleDnsProvider
|
|
|
|
from fishy import helper
|
|
|
|
from ..constants import apiversion
|
|
from ..helper.config import config
|
|
from . import urls
|
|
from .decorators import fallback, uses_session
|
|
|
|
_session_id = None
|
|
|
|
|
|
@fallback(-1)
|
|
def is_logged_in():
|
|
if config.get("uid") is None:
|
|
return -1
|
|
|
|
body = {"uid": config.get("uid"), "apiversion": apiversion}
|
|
response = requests.get(urls.discord, params=body)
|
|
logged_in = response.json()["discord_login"]
|
|
return 1 if logged_in else 0
|
|
|
|
|
|
@fallback(False)
|
|
def login(uid, login_code):
|
|
body = {"uid": uid, "login_code": login_code, "apiversion": apiversion}
|
|
reponse = requests.post(urls.discord, json=body)
|
|
result = reponse.json()
|
|
|
|
if "new_id" in result:
|
|
config.set("uid", result["new_id"])
|
|
|
|
return result["success"]
|
|
|
|
|
|
@fallback(False)
|
|
def logout():
|
|
body = {"uid": config.get("uid"), "apiversion": apiversion}
|
|
reponse = requests.delete(urls.discord, json=body)
|
|
result = reponse.json()
|
|
return result["success"]
|
|
|
|
|
|
@fallback(None)
|
|
def register_user():
|
|
ip = get_ip(GoogleDnsProvider)
|
|
body = {"ip": ip, "apiversion": apiversion}
|
|
response = requests.post(urls.user, json=body)
|
|
result = response.json()
|
|
return result["uid"]
|
|
|
|
|
|
@fallback(None)
|
|
def send_notification(message):
|
|
if not is_subbed()[0]:
|
|
return False
|
|
|
|
body = {"uid": config.get("uid"), "message": message, "apiversion": apiversion}
|
|
requests.post(urls.notify, json=body)
|
|
|
|
|
|
@uses_session
|
|
@fallback(None)
|
|
def send_fish_caught(fish_caught, hole_time, fish_times):
|
|
hole_data = {
|
|
"fish_caught": fish_caught,
|
|
"hole_time": hole_time,
|
|
"fish_times": fish_times,
|
|
"session": get_session()
|
|
}
|
|
|
|
body = {"uid": config.get("uid"), "hole_data": hole_data, "apiversion": apiversion}
|
|
requests.post(urls.hole_depleted, json=body)
|
|
|
|
|
|
@fallback(False)
|
|
def sub():
|
|
body = {"uid": config.get("uid"), "apiversion": apiversion}
|
|
response = requests.post(urls.subscription, json=body)
|
|
result = response.json()
|
|
return result["success"]
|
|
|
|
|
|
@fallback((False, False))
|
|
def is_subbed():
|
|
"""
|
|
:param uid:
|
|
:param lazy:
|
|
:return: Tuple[is_subbed, success]
|
|
"""
|
|
|
|
if config.get("uid") is None:
|
|
return False, False
|
|
|
|
body = {"uid": config.get("uid"), "apiversion": apiversion}
|
|
response = requests.get(urls.subscription, params=body)
|
|
|
|
if response.status_code != 200:
|
|
return False, False
|
|
|
|
is_subbed = response.json()["subbed"]
|
|
return is_subbed, True
|
|
|
|
|
|
@fallback(None)
|
|
def unsub():
|
|
body = {"uid": config.get("uid"), "apiversion": apiversion}
|
|
response = requests.delete(urls.subscription, json=body)
|
|
result = response.json()
|
|
return result["success"]
|
|
|
|
|
|
def get_session(lazy=True):
|
|
global _session_id
|
|
|
|
# lazy loading logic
|
|
if lazy and _session_id is not None:
|
|
return _session_id
|
|
|
|
# check if user has uid
|
|
uid = config.get("uid")
|
|
|
|
# then create session
|
|
if uid:
|
|
_session_id, online = _create_new_session(uid)
|
|
# if not, create new id then try creating session again
|
|
else:
|
|
uid = register_user()
|
|
logging.debug("New User, generated new uid")
|
|
if uid:
|
|
_session_id, online = _create_new_session(uid)
|
|
else:
|
|
online = False
|
|
|
|
# when the user is already registered but session is not created as uid is not found
|
|
if online and not _session_id:
|
|
logging.error("user not found, generating new uid.. contact dev if you don't want to loose data")
|
|
new_uid = register_user()
|
|
_session_id, online = _create_new_session(new_uid)
|
|
config.set("uid", new_uid)
|
|
config.set("old_uid", uid)
|
|
|
|
return _session_id
|
|
|
|
|
|
@fallback((None, False))
|
|
def _create_new_session(uid):
|
|
body = {"uid": uid, "apiversion": apiversion}
|
|
response = requests.post(urls.session, params=body)
|
|
|
|
if response.status_code == 405:
|
|
return None, True
|
|
|
|
return response.json()["session_id"], True
|
|
|
|
@fallback(False)
|
|
def has_beta():
|
|
body = {"uid": config.get("uid"), "apiversion": apiversion}
|
|
response = requests.get(urls.beta, params=body)
|
|
result = response.json()
|
|
|
|
if not result["success"]:
|
|
return False
|
|
|
|
return response.json()["beta"]
|
|
|
|
|
|
@fallback(None)
|
|
def ping():
|
|
body = {"uid": config.get("uid"), "apiversion": apiversion}
|
|
requests.post(urls.ping, params=body)
|