50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
import os
|
|
import requests
|
|
|
|
login = os.getenv("WOODBURN_USER")
|
|
|
|
|
|
def getUserQuota(user: str) -> dict[str, int | str]:
|
|
"""
|
|
Get the user's quota information from the environment variable.
|
|
Returns a dictionary with 'used' and 'total' as integers.
|
|
"""
|
|
headers = {"OCS-APIRequest": "true", "Accept": "application/json"}
|
|
if not login:
|
|
return {
|
|
"used": 0,
|
|
"total": 5,
|
|
"percentage": "0.0",
|
|
"error": "WOODBURN_USER environment variable not set",
|
|
}
|
|
# curl -u user https://cloud.woodburn.au/ocs/v1.php/cloud/users/nathan OCS-APIRequest:true
|
|
response = requests.get(
|
|
f"https://cloud.woodburn.au/ocs/v1.php/cloud/users/{user}",
|
|
headers=headers,
|
|
auth=(login.split(":")[0], login.split(":")[1]),
|
|
)
|
|
if response.status_code != 200:
|
|
return {
|
|
"used": 0,
|
|
"total": 5,
|
|
"percentage": "0.0",
|
|
"error": f"Failed to fetch quota: {response.status_code}",
|
|
}
|
|
data = response.json()
|
|
# If the request failed
|
|
if data.get("ocs", {}).get("meta", {}).get("status") != "ok":
|
|
return {
|
|
"used": 0,
|
|
"total": 5,
|
|
"percentage": "0.0",
|
|
"error": data.get("ocs", {})
|
|
.get("meta", {})
|
|
.get("message", "Unknown error"),
|
|
}
|
|
|
|
quota = data.get("ocs", {}).get("data", {}).get("quota", {})
|
|
# Convert to GB
|
|
used = int(quota.get("used", 0)) // (1024 * 1024 * 1024)
|
|
total = int(quota.get("total", 0)) // (1024 * 1024 * 1024)
|
|
return {"used": used, "total": total, "percentage": quota.get("relative", "0.0")}
|