Spaces:
Sleeping
Sleeping
import os | |
import requests | |
from crewai.tools import BaseTool | |
class ShortenerTool(BaseTool): | |
name: str = "URL Shortener Tool" | |
description: str = "Generates a short version of a given URL using an external API." | |
def _run(self, original_url: str) -> str: | |
api_url = "https://sales-mgmt-cb-bff-apigw.prd.naturacloud.com/cb-bff-cms/cms/shortener" | |
headers = { | |
"accept": "*/*", | |
"accept-language": "pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7", | |
"authorization": f"Bearer {os.getenv('NATURA_API_TOKEN')}", # Get token from env | |
"content-type": "application/json", | |
"origin": "https://minhaloja.natura.com", | |
"referer": "https://minhaloja.natura.com/", | |
"sec-ch-ua": '"Not)A;Brand";v="8", "Chromium";v="138", "Google Chrome";v="138"' , # Escaped quotes | |
"sec-ch-ua-mobile": "?0", | |
"sec-ch-ua-platform": '"Windows"' , # Escaped quotes | |
"sec-fetch-dest": "empty", | |
"sec-fetch-mode": "cors", | |
"sec-fetch-site": "cross-site", | |
"siteid": "CBBrazil", | |
"tenantid": "brazil-natura", | |
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36", | |
} | |
payload = {"url": original_url} | |
try: | |
response = requests.post(api_url, headers=headers, json=payload) | |
response.raise_for_status() # Raise an exception for HTTP errors | |
short_url_data = response.json() | |
return short_url_data.get("short", original_url) # Return original_url if short not found | |
except requests.exceptions.RequestException as e: | |
print(f"Warning: Error generating short URL for {original_url}: {e}. Returning original URL.") | |
return original_url | |
except ValueError: | |
print(f"Warning: Invalid JSON response from shortener API for {original_url}. Returning original URL.") | |
return original_url | |