nat-ad / shortener_tool.py
ibombonato's picture
Upload 4 files
3c7d0f6 verified
raw
history blame
2.02 kB
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