import re
class ExtratorURL:
def __init__(self, url):
self.url = self.sanitiza_url(url)
self.valida_url()
self.url_base = self.get_url_base()
self.url_parametros = self.get_url_parametros()
def __len__(self):
return len(self.url)
def __str__(self):
return self.url
def __eq__(self, other):
return self.url == other.url
def sanitiza_url(self, url):
if type(url) == str:
return url.strip()
else:
return ""
def valida_url(self):
if not self.url:
raise ValueError("A url está vazia.")
padrao_url = re.compile('(http(s)?://)?(www.)?bytebank.com(.br)?/cambio')
match = padrao_url.match(self.url)
if not match:
raise ValueError("A url não é válida.")
else:
print("A url é válida.")
def get_url_base(self):
indice = self.url.find('?')
return self.url[:indice]
def get_url_parametros(self):
indice = self.url.find('?')
return self.url[indice + 1:]
def get_valor_parametro(self, parametro_busca):
indice_parametro = self.url_parametros.find(parametro_busca)
indice_valor = indice_parametro + len(parametro_busca) + 1
indice_e_comercial = self.url_parametros.find('&', indice_valor)
if indice_e_comercial == -1:
return self.url_parametros[indice_valor:]
else:
return self.url_parametros[indice_valor:indice_e_comercial]
def __str__(self):
return self.url + "\n" + "Parâmetros: " + self.get_url_parametros() + "\n" + "URL Base: " + self.get_url_base()
extrator = ExtratorURL('bytebank.com/cambio?moedaDestino=dolar&quantidade=100&moedaOrigem=real')
dolar = 5.50
def conversao_dolar_real():
moeda_origem = extrator.get_valor_parametro("moedaOrigem")
moeda_destino = extrator.get_valor_parametro("moedaDestino")
quantidade = extrator.get_valor_parametro("quantidade")
if moeda_origem == 'dolar' and moeda_destino == 'real':
return float(quantidade) / dolar
elif moeda_origem == 'real' and moeda_destino == 'dolar':
return float(quantidade) * dolar
else:
raise ValueError("A url não possui ambos parâmetros.")
print(conversao_dolar_real())