acho que implementei errado o método trocaMoedaOrigem() ou o encontraIndiceInicial() e não consigo achar o erro, tudo funciona normalmente, mas ao invocar o método trocaMoedaOrigem() a variável moedaDestino passa a armazenar 'destino=dolar' e não somente 'dolar' com antes, observei os índices que o .find() estava retornando e notei um comportamento estranho, eles não estavam se alterando dps que eu invocava o método trocaMoedaOrigem(), o que é estranho pq se a url muda de tamanho consequentemente aquela palavra irá se deslocar mudando seu índice. Segue o código, estou a um tempão tentando resolver e nada rsmain.py
from ExtratorArgumentosUrl import ExtratorArgumentosUrl
url = 'cambio?moedaorigem=moedadestino&moedadestino=dolar'
argumentosUrl = ExtratorArgumentosUrl(url)
moedaOrigem, moedaDestino = argumentosUrl.extraiArgumentos(url)
print(moedaOrigem, moedaDestino)
ExtratorArgumentosUrl.py
class ExtratorArgumentosUrl :
def __init__(self, url):
if self.urlEhValida(url):
self.url = url
else:
raise LookupError("Url Inválida!")
@staticmethod
def urlEhValida(url):
if url:
return True
else:
return False
def extraiArgumentos(self, url):
buscaMoedaOrigem = "moedaorigem="
buscaMoedaDestino = "moedadestino="
indiceInicialOrigem = self.encontraIndiceInicial(buscaMoedaOrigem)
indiceFinalOrigem = self.url.find("&")
moedaOrigem = url[indiceInicialOrigem:indiceFinalOrigem]
if moedaOrigem == 'moedadestino':
self.trocaMoedaOrigem()
indiceInicialDestino = self.encontraIndiceInicial(buscaMoedaDestino)
moedaDestino = url[indiceInicialDestino:]
return moedaOrigem, moedaDestino
def encontraIndiceInicial(self, moedaBuscada):
resultado = self.url.find(moedaBuscada) + len(moedaBuscada) #Nesta linha nós adicionamos o tamanho(retornado em int) da palavra que está armazenada na variavel moeda, que é passada por parâmetro, ao indice que irá ser retonado.
return resultado
def trocaMoedaOrigem(self):
self.url = self.url.replace('moedadestino', 'real', 1)