Files

93 lines
4.0 KiB
Python
Raw Permalink Normal View History

2025-10-07 14:52:04 +01:00
#!/usr/bin/env python3
"""
ParentZone API Test Script
This script tests the ParentZone API integration specifically.
"""
import asyncio
import aiohttp
import json
from urllib.parse import urljoin
async def test_parentzone_api():
"""Test the ParentZone API with the provided API key."""
api_url = "https://api.parentzone.me"
list_endpoint = "/v1/gallery"
download_endpoint = "/v1/media"
api_key = "b23326a9-bcbf-4bad-b026-9c79dad6a654"
headers = {
'x-api-key': api_key
}
print("=" * 60)
print("ParentZone API Test")
print("=" * 60)
timeout = aiohttp.ClientTimeout(total=30)
async with aiohttp.ClientSession(timeout=timeout) as session:
# Test list endpoint
list_url = urljoin(api_url, list_endpoint)
print(f"Testing list endpoint: {list_url}")
try:
async with session.get(list_url, headers=headers) as response:
print(f"Status Code: {response.status}")
print(f"Content-Type: {response.headers.get('content-type', 'Not specified')}")
if response.status == 200:
data = await response.json()
print(f"Response type: {type(data)}")
if isinstance(data, list):
print(f"✓ Found {len(data)} assets in array")
if data:
print(f"First asset keys: {list(data[0].keys())}")
print(f"Sample asset: {json.dumps(data[0], indent=2)}")
# Test download endpoint with first asset
asset_id = data[0].get('id')
updated = data[0].get('updated', '')
if asset_id:
print(f"\nTesting download endpoint with asset ID: {asset_id}")
from urllib.parse import urlencode
params = {
'key': api_key,
'u': updated
}
download_url = urljoin(api_url, f"/v1/media/{asset_id}/full?{urlencode(params)}")
print(f"Download URL: {download_url}")
async with session.get(download_url) as download_response:
print(f"Download Status Code: {download_response.status}")
print(f"Download Content-Type: {download_response.headers.get('content-type', 'Not specified')}")
print(f"Download Content-Length: {download_response.headers.get('content-length', 'Not specified')}")
if download_response.status == 200:
content_type = download_response.headers.get('content-type', '')
if content_type.startswith('image/'):
print("✓ Download endpoint returns image content")
else:
print(f"⚠ Warning: Content type is not an image: {content_type}")
else:
print(f"✗ Download endpoint failed: HTTP {download_response.status}")
else:
print("⚠ No asset ID found in first asset")
else:
print(f"✗ Unexpected response format: {type(data)}")
else:
print(f"✗ List endpoint failed: HTTP {response.status}")
except Exception as e:
print(f"✗ Error testing API: {e}")
print("\n" + "=" * 60)
print("TEST COMPLETE")
print("=" * 60)
if __name__ == "__main__":
asyncio.run(test_parentzone_api())