From 7cbe96ac3d1fa8d6739042770fdd0133c35d03e4 Mon Sep 17 00:00:00 2001 From: Yuuki Chan Date: Thu, 23 Feb 2023 23:22:25 +0900 Subject: [PATCH] Commit base app for time being. Doesn't do anything yet. --- earnapp/__init__.py | 0 earnapp/earnapp.py | 31 +++++++++++++++++++++ earnapp/errors.py | 63 +++++++++++++++++++++++++++++++++++++++++++ run.py | 24 +++++++++++++++++ settings.example.json | 8 ++++++ 5 files changed, 126 insertions(+) create mode 100644 earnapp/__init__.py create mode 100644 earnapp/earnapp.py create mode 100644 earnapp/errors.py create mode 100644 run.py create mode 100644 settings.example.json diff --git a/earnapp/__init__.py b/earnapp/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/earnapp/earnapp.py b/earnapp/earnapp.py new file mode 100644 index 0000000..3445b5f --- /dev/null +++ b/earnapp/earnapp.py @@ -0,0 +1,31 @@ +import httpx as requests +import json + +from .errors import * + + +class EarnApp: + def __init__(self) -> None: + self.data = json.load(open('settings.json', mode='r', encoding='UTF-8'))['settings'] + self.params = { + 'appid': 'earnapp', + 'version': '1.361.776', + } + self.headers = { + 'cookie': 'auth=1; ' + 'auth-method=google; ' + 'oauth-token={}; ' + 'oauth-refresh-token={};'.format(self.data['oauth-token'], self.data['oauth-refresh-token']) + } + self.minimum_redeem_balance = float(2.50) + + def get(self, endpoint: str) -> json: + r = requests.get(self.data['api'] + endpoint, params=self.params, headers=self.headers) + + if r.status_code == 403: + raise AuthenticationError + elif r.status_code == 429: + raise TooManyRequestsError({'error': 'EarnApp does not allow adding multiple devices at the same time. ' + 'Try adding some delay between requests.'}) + elif r.status_code == 200: + return r.json() diff --git a/earnapp/errors.py b/earnapp/errors.py new file mode 100644 index 0000000..f262868 --- /dev/null +++ b/earnapp/errors.py @@ -0,0 +1,63 @@ +class UnKnownError(Exception): + def __init__(self, *args: object) -> None: + super().__init__(*args) + + +class AuthenticationError(Exception): + def __init__(self) -> None: + super().__init__({'error': 'Error authenticating. Enter a proper oauth-refresh-token.'}) + + +class DeviceAddError(Exception): + def __init__(self, *args: object) -> None: + super().__init__(*args) + + +class DeviceNotFoundError(DeviceAddError): + def __init__(self, *args: object) -> None: + super().__init__(*args) + + +class DeviceAlreadyAddedError(DeviceAddError): + def __init__(self, *args: object) -> None: + super().__init__(*args) + + +class UnknownDeviceAddError(DeviceAddError): + def __init__(self, *args: object) -> None: + super().__init__(*args) + + +class TooManyRequestsError(DeviceAddError): + def __init__(self, *args: object) -> None: + super().__init__(*args) + + +class IPCheckError(Exception): + def __init__(self, *args: object) -> None: + super().__init__(*args) + + +class UnknownIPCheckError(IPCheckError): + def __init__(self, *args: object) -> None: + super().__init__(*args) + + +class InvalidIPAddressError(IPCheckError): + def __init__(self, *args: object) -> None: + super().__init__('The IP Address is not valid.', *args) + + +class RedeemError(Exception): + def __init__(self, *args: object) -> None: + super().__init__(*args) + + +class UnKnownRedeemError(RedeemError): + def __init__(self, *args: object) -> None: + super().__init__(*args) + + +class MinimumRedeemBalanceError(RedeemError): + def __init__(self, *args: object) -> None: + super().__init__(*args) diff --git a/run.py b/run.py new file mode 100644 index 0000000..cd3eb08 --- /dev/null +++ b/run.py @@ -0,0 +1,24 @@ +from earnapp.earnapp import EarnApp + +ea = EarnApp() + +# user_data = ea.get('/user_data') +# notifications = ea.get('/notifications') +# counters = ea.get('/counters') +# money = ea.get('/money') +# payment_methods = ea.get('/payment_methods') +# usage = ea.get('/usage') +# devices = ea.get('/devices') +# device_statuses = ea.get('/device_statuses') +# transaction_info = ea.get('/transactions') +# referees = ea.get('/referees') +# referees_bvpn = ea.get('/referees_bvpn') +# bonuses = ea.get('/bonuses') + + +def main(): + print() + + +if __name__ == '__main__': + main() diff --git a/settings.example.json b/settings.example.json new file mode 100644 index 0000000..5822fa5 --- /dev/null +++ b/settings.example.json @@ -0,0 +1,8 @@ +{ + "settings": { + "webhook": "", + "oauth-refresh-token": "", + "oauth-token": "", + "api": "https://earnapp.com/dashboard/api" + } +}