mirror of
https://github.com/Kizuren/LidlConnect.py.git
synced 2025-12-21 21:16:13 +01:00
58 lines
No EOL
1.8 KiB
Python
58 lines
No EOL
1.8 KiB
Python
"""Credit-related API functionality for Lidl Connect."""
|
|
|
|
class CreditMixin:
|
|
"""Credit methods for Lidl Connect API."""
|
|
|
|
CREDIT_URL = "https://selfcare.lidl-connect.at/credit/code"
|
|
|
|
def credit_topup(self, code: str) -> bool:
|
|
"""
|
|
Top up credit using a voucher code.
|
|
|
|
Args:
|
|
code: The voucher code to redeem
|
|
|
|
Returns:
|
|
True if the top up was successful, False otherwise.
|
|
"""
|
|
if not self.logged_in or not self.csrf_token:
|
|
raise ValueError("Not logged in or missing CSRF token")
|
|
|
|
headers = {
|
|
"Accept": "application/json",
|
|
"Content-Type": "application/json;charset=UTF-8",
|
|
"X-Requested-With": "XMLHttpRequest",
|
|
"Origin": "https://selfcare.lidl-connect.at",
|
|
"Referer": self.DASHBOARD_URL,
|
|
"X-CSRF-TOKEN": self.csrf_token,
|
|
"X-SELF-CARE": "1",
|
|
}
|
|
|
|
phone_number = self.phone_number
|
|
if not phone_number:
|
|
raise ValueError("Phone number not available")
|
|
|
|
payload = {
|
|
"phoneNumber": phone_number,
|
|
"code": {
|
|
"label": "credit_top_up.bon",
|
|
"code_fields": 1,
|
|
"code_field_length": 16,
|
|
"code_validation": "^([a-zA-Z0-9]+)$",
|
|
"active": True,
|
|
"api_type": "VOUCHER_WITH_ACTIVATION_NUMBER",
|
|
"code": code
|
|
},
|
|
"userId": self.user_id,
|
|
"endpointId": self.endpoint_id
|
|
}
|
|
|
|
r = self.session.post(self.CREDIT_URL, headers=headers, json=payload)
|
|
|
|
if r.status_code != 200:
|
|
return False
|
|
|
|
if hasattr(self._get_user_data, 'cache'):
|
|
self._get_user_data.cache.clear()
|
|
|
|
return True |