Spaces:
Sleeping
Sleeping
File size: 1,916 Bytes
3c7d0f6 ffd6997 3c7d0f6 ffd6997 3c7d0f6 ffd6997 3c7d0f6 ffd6997 3c7d0f6 ffd6997 3c7d0f6 ffd6997 3c7d0f6 ffd6997 3c7d0f6 ffd6997 3c7d0f6 |
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 |
import os
import requests
from crewai.tools import BaseTool
from dotenv import load_dotenv
load_dotenv()
class ShortenerTool(BaseTool):
name: str = "URL Shortener Tool"
description: str = "Generates a short version of a given URL using an external API."
natura_api_token: str
def _run(self, original_url: str) -> str:
api_url = "https://ncf-apigw.prd.naturacloud.com/url-shortener/links"
headers = {
"accept": "*/*",
"accept-language": "pt-BR,pt;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
"authorization": f"Bearer {self.natura_api_token}",
"content-type": "application/json",
"priority": "u=1, i",
"sec-ch-ua": "\"Microsoft Edge\";v=\"141\", \"Not?A_Brand\";v=\"8\", \"Chromium\";v=\"141\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "cross-site",
"x-api-key": f"{os.environ["NATURA_X_API_KEY"]}",
"Referer": "https://www.minhaloja.natura.com/"
}
payload = {
"url": original_url,
"domain": 1
}
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
|