Spaces:
Running
Running
File size: 1,674 Bytes
8f08648 0f54ea3 8f08648 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
import requests
import json
import os
from logger_manager import log_info, log_error
from env import VUFORIA_SERVER_ACCESS_KEY, VUFORIA_SERVER_SECRET_KEY
def get_vuforia_auth_headers():
"""
Returns the authentication headers for Vuforia API requests.
"""
return {
"Authorization": f"VWS {VUFORIA_SERVER_ACCESS_KEY}:{VUFORIA_SERVER_SECRET_KEY}",
"Content-Type": "application/json",
}
async def add_target_to_vuforia(image_name: str, image_path: str) -> str:
"""
Adds a target to the Vuforia database and returns the Vuforia target ID.
"""
log_info(f"Adding target {image_name} to Vuforia")
try:
with open(image_path, "rb") as image_file:
image_data = image_file.read()
url = f"https://vws.vuforia.com/targets"
headers = get_vuforia_auth_headers()
payload = {
"name": image_name,
"width": 1.0, # Default width
"image": image_data.hex(), # Convert image data to hex
"active_flag": True,
}
response = requests.post(url, headers=headers, json=payload)
response_data = json.loads(response.text)
if response.status_code == 201:
log_info(
f"Target {image_name} added successfully with Vuforia ID: {response_data['target_id']}"
)
return response_data["target_id"]
else:
log_error(f"Failed to add target {image_name}: {response.text}")
raise Exception(f"Failed to add target {image_name}: {response.text}")
except Exception as e:
log_error(f"Error adding target {image_name}: {e}", e)
raise |