H4_New / app /Hackathon_setup /test_api_fixed.py
PavaniYerra's picture
Face Recognition
2ca4976
"""
Fixed test script for the deployed Hugging Face API
"""
import requests
import base64
import numpy as np
from PIL import Image
import io
def create_test_image():
"""Create a test image for API testing"""
# Create a simple test image
img = np.random.randint(0, 255, (100, 100, 3), dtype=np.uint8)
# Convert to PIL Image
pil_img = Image.fromarray(img)
# Convert to base64
buffer = io.BytesIO()
pil_img.save(buffer, format='JPEG')
img_str = base64.b64encode(buffer.getvalue()).decode()
return img_str
def test_api_with_form_data():
"""Test the API using form data (multipart/form-data)"""
url = "https://pavaniyerra-hackthon4.hf.space/predict_similarity/"
print("Testing API with form data...")
print("=" * 40)
try:
# Create test images
img1_b64 = create_test_image()
img2_b64 = create_test_image()
# Convert base64 to bytes
img1_bytes = base64.b64decode(img1_b64)
img2_bytes = base64.b64decode(img2_b64)
# Prepare files for form data
files = {
'file1': ('image1.jpg', img1_bytes, 'image/jpeg'),
'file2': ('image2.jpg', img2_bytes, 'image/jpeg')
}
print("Sending request with form data...")
response = requests.post(url, files=files, timeout=30)
print(f"Status Code: {response.status_code}")
print(f"Response Headers: {dict(response.headers)}")
print(f"Response Text: {response.text}")
if response.status_code == 200:
try:
result = response.json()
print("SUCCESS: API Response received successfully!")
print(f"Similarity Score: {result}")
except:
print(f"Response (not JSON): {response.text}")
else:
print(f"ERROR: API Error: {response.status_code}")
except Exception as e:
print(f"ERROR: {e}")
def test_api_with_json():
"""Test the API using JSON data"""
url = "https://pavaniyerra-hackthon4.hf.space/predict_similarity/"
print("\nTesting API with JSON data...")
print("=" * 40)
try:
# Create test images
img1_b64 = create_test_image()
img2_b64 = create_test_image()
# Try different JSON formats
json_formats = [
{"file1": img1_b64, "file2": img2_b64},
{"img1": img1_b64, "img2": img2_b64},
{"image1": img1_b64, "image2": img2_b64},
{"files": [img1_b64, img2_b64]},
{"data": {"file1": img1_b64, "file2": img2_b64}}
]
for i, data in enumerate(json_formats):
print(f"\nTrying JSON format {i+1}: {list(data.keys())}")
response = requests.post(url, json=data, timeout=30)
print(f"Status: {response.status_code}")
if response.status_code == 200:
print("SUCCESS!")
print(f"Response: {response.text}")
break
else:
print(f"Error: {response.text[:200]}...")
except Exception as e:
print(f"ERROR: {e}")
def test_api_info():
"""Get information about the API"""
base_url = "https://pavaniyerra-hackthon4.hf.space"
print("\nGetting API information...")
print("=" * 40)
try:
# Try to get API info
response = requests.get(base_url, timeout=30)
print(f"Base URL Status: {response.status_code}")
# Try common endpoints
endpoints = ["/", "/docs", "/openapi.json", "/info", "/health"]
for endpoint in endpoints:
try:
url = base_url + endpoint
response = requests.get(url, timeout=10)
print(f"{endpoint}: {response.status_code}")
if response.status_code == 200 and len(response.text) < 500:
print(f" Content: {response.text[:100]}...")
except:
print(f"{endpoint}: Error")
except Exception as e:
print(f"ERROR: {e}")
if __name__ == "__main__":
print("Hugging Face API Test - Fixed Version")
print("=" * 50)
print(f"API URL: https://pavaniyerra-hackthon4.hf.space/predict_similarity/")
print()
# Test different approaches
test_api_with_form_data()
test_api_with_json()
test_api_info()
print("\n" + "=" * 50)
print("API Testing Complete!")