Pois é, já vi se foi algo pelo alias, to verificando e debugando. As classes estão de acordo com a sugestão do curso. Fiz uma requisição simples pelo navegador e a tradução ocorreu. No IntelliJ ocorre a compilação normalmente e as classes estão de acordo. Mas a tradução da sinopse não retorna.
package br.com.alura.screenmatch.model;
import br.com.alura.screenmatch.service.traducao.ConsultaMyMemory;
import java.util.OptionalDouble;
public class Serie {
private String titulo;
private Integer totalTemporadas;
private Double avaliacao;
private Categoria genero;
private String atores;
private String poster;
private String sinopse;
public Serie(DadosSerie dadosSerie) {
this.titulo = dadosSerie.titulo();
this.totalTemporadas = dadosSerie.totalTemporadas();
this.avaliacao = OptionalDouble.of(Double.valueOf(dadosSerie.avaliacao())).orElse(0); // valor que chega em String
this.genero = Categoria.fromString(dadosSerie.genero().split(",")[0].trim()); // Usando um método estático que retorna dinamicamente o valor categorizado no Enum, sendo p primeiro genero somente
this.atores = dadosSerie.atores();
this.poster = dadosSerie.poster();
this.sinopse = ConsultaMyMemory.obterTraducao(dadosSerie.sinopse()).trim();
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public Integer getTotalTemporadas() {
return totalTemporadas;
}
public void setTotalTemporadas(Integer totalTemporadas) {
this.totalTemporadas = totalTemporadas;
}
public Double getAvaliacao() {
return avaliacao;
}
public void setAvaliacao(Double avaliacao) {
this.avaliacao = avaliacao;
}
public Categoria getGenero() {
return genero;
}
public void setGenero(Categoria genero) {
this.genero = genero;
}
public String getAtores() {
return atores;
}
public void setAtores(String atores) {
this.atores = atores;
}
public String getPoster() {
return poster;
}
public void setPoster(String poster) {
this.poster = poster;
}
public String getSinopse() {
return sinopse;
}
public void setSinopse(String sinopse) {
this.sinopse = sinopse;
}
@Override
public String toString() {
return
"genero=" + genero +
", titulo='" + titulo + '\'' +
", totalTemporadas=" + totalTemporadas +
", avaliacao=" + avaliacao +
", atores='" + atores + '\'' +
", poster='" + poster + '\'' +
", sinopse='" + sinopse + '\'';
}
}
package br.com.alura.screenmatch.service.traducao;
import br.com.alura.screenmatch.service.ConsumoApi;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.net.URLEncoder;
public class ConsultaMyMemory {
public static String obterTraducao(String text) {
ObjectMapper mapper = new ObjectMapper();
ConsumoApi consumo = new ConsumoApi();
String texto = URLEncoder.encode(text);
String langpair = URLEncoder.encode("en|pt-br");
String url = "https://api.mymemory.translated.net/get?q=" + texto + "&langpair=" + langpair;
String json = consumo.obterDados(url);
DadosTraducao traducao;
try {
traducao = mapper.readValue(json, DadosTraducao.class);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
return traducao.dadosResposta().textoTraduzido();
}
}
package br.com.alura.screenmatch.service.traducao;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public record DadosResposta( @JsonAlias(value = "translatedText") String textoTraduzido) {
}
package br.com.alura.screenmatch.service.traducao;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public record DadosTraducao(@JsonAlias(value = "responseData") DadosResposta dadosResposta) {
}