Files
woodburn/tools/cloud.py
Nathan Woodburn 5db23f0cd0
All checks were successful
Build Docker / BuildImage (push) Successful in 2m32s
Check Code Quality / RuffCheck (push) Successful in 2m38s
feat: Add nextcloud and immich api integration
2026-03-16 22:24:33 +11:00

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")}