aboutsummaryrefslogtreecommitdiff
path: root/jb/managers/thl.py
diff options
context:
space:
mode:
authorMax Nanis2026-09-13 19:03:55 +0000
committerMax Nanis2026-09-13 19:03:55 +0000
commit8fbe8d439b418796932aaa88297e006c714e4d13 (patch)
tree6c800476edc1e771fc570b559d483df8d59d4324 /jb/managers/thl.py
parent12f6fee851b68e86af658dfa17e4a0daed457dd1 (diff)
parent2c94f248d2438071a918fa9a30bf114ef9aa29b4 (diff)
downloadamt-jb-8fbe8d439b418796932aaa88297e006c714e4d13.tar.gz
amt-jb-8fbe8d439b418796932aaa88297e006c714e4d13.zip
Merges pull request #3
Off of Amazon!!!
Diffstat (limited to 'jb/managers/thl.py')
-rw-r--r--jb/managers/thl.py74
1 files changed, 12 insertions, 62 deletions
diff --git a/jb/managers/thl.py b/jb/managers/thl.py
index 6e8effc..85e0697 100644
--- a/jb/managers/thl.py
+++ b/jb/managers/thl.py
@@ -1,64 +1,18 @@
-from generalresearchutils.models.thl.payout import UserPayoutEvent
-from generalresearchutils.models.thl.task_status import TaskStatusResponse
-from generalresearchutils.models.thl.wallet.cashout_method import (
- CashoutRequestResponse,
+import requests
+from generalresearch.currency import USDCent
+from generalresearch.models.thl.definitions import PayoutStatus
+from generalresearch.models.thl.payout import UserPayoutEvent
+from generalresearch.models.thl.task_status import TaskStatusResponse
+from generalresearch.models.thl.wallet.cashout_method import (
CashoutRequestInfo,
+ CashoutRequestResponse,
)
-from generalresearchutils.models.thl.user_profile import UserProfile
-from generalresearchutils.currency import USDCent
-
from jb.config import settings
+from jb.models.auth import User
-from generalresearchutils.models.thl.definitions import PayoutStatus
-
-
-from typing import Optional
-import requests
-
-# TODO: Organize this more with other endpoints (offerwall, cashout
-# requests/approvals, etc).
-
-
-def get_user_profile(amt_worker_id: str) -> UserProfile:
- url = f"{settings.fsb_host}{settings.product_id}/user/{amt_worker_id}/profile/"
- res = requests.get(url).json()
-
- if res.get("detail") == "user not found":
- raise ValueError("user not found")
- user_profile = res["user_profile"]
- # todo: these are computed fields, need a UserProfile parser
- user_profile.pop("email_md5", None)
- user_profile.pop("email_sha1", None)
- user_profile.pop("email_sha256", None)
- # todo: this contains computed fields inside each streak object
- user_profile.pop("streaks", None)
- # todo: this shouldn't be in here anyways ---v
- user_profile["user"].pop("id", None)
-
- return UserProfile.model_validate(user_profile)
-
-
-def get_user_blocked(amt_worker_id: str) -> bool:
- # Not blocked if None
- res = get_user_profile(amt_worker_id=amt_worker_id)
- return res.user.blocked if res.user.blocked is not None else False
-
-
-def get_user_blocked_or_not_exists(amt_worker_id: str) -> Optional[bool]:
- try:
- res = get_user_profile(amt_worker_id=amt_worker_id)
- return res.user.blocked if res.user.blocked is not None else False
-
- except ValueError as e:
- if e.args[0] == "user not found":
- return True
-
- return None
-
-
-def get_task_status(tsid: str) -> Optional[TaskStatusResponse]:
+def get_task_status(tsid: str) -> TaskStatusResponse | None:
url = f"{settings.fsb_host}{settings.product_id}/status/{tsid}/"
d = requests.get(url).json()
if d.get("msg") == "invalid tsid":
@@ -68,18 +22,14 @@ def get_task_status(tsid: str) -> Optional[TaskStatusResponse]:
def user_cashout_request(
- amt_worker_id: str, amount: USDCent, cashout_method_id: str
+ user: User, amount: USDCent, cashout_method_id: str
) -> CashoutRequestInfo:
- assert cashout_method_id in {
- settings.amt_assignment_cashout_method,
- settings.amt_bonus_cashout_method,
- }
assert isinstance(amount, USDCent)
assert USDCent(0) < amount < USDCent(10_00)
url = f"{settings.fsb_host}{settings.product_id}/cashout/"
body: dict[str, str | int] = {
- "bpuid": amt_worker_id,
+ "bpuid": user.product_user_id,
"amount": int(amount),
"cashout_method_id": cashout_method_id,
}
@@ -110,7 +60,7 @@ def get_wallet_balance(amt_worker_id: str) -> USDCent:
return USDCent(requests.get(url, params=params).json()["wallet"]["amount"])
-def get_wallet_balance_if_non_negative(amt_worker_id: str) -> Optional[USDCent]:
+def get_wallet_balance_if_non_negative(amt_worker_id: str) -> USDCent | None:
url = f"{settings.fsb_host}{settings.product_id}/wallet/"
params = {"bpuid": amt_worker_id}
amt = requests.get(url, params=params).json()["wallet"]["amount"]