88import java .util .List ;
99import java .util .Map ;
1010
11- import com .mongodb .lang .Nullable ;
1211import org .springframework .beans .factory .annotation .Value ;
13- import org .springframework .http .HttpHeaders ;
14- import org .springframework .http .MediaType ;
1512import org .springframework .stereotype .Service ;
16- import org .springframework .web .reactive .function .client .WebClient ;
1713import org .springframework .web .reactive .function .client .WebClientResponseException ;
1814
1915import com .dmware .api_onibusbh .config .WebClientConfig ;
2521import com .fasterxml .jackson .databind .ObjectMapper ;
2622import reactor .core .publisher .Flux ;
2723import reactor .core .publisher .Mono ;
28- import reactor .util .function .Tuple2 ;
2924
3025@ Service
3126public class APIService {
@@ -34,9 +29,6 @@ public class APIService {
3429 private String BASE_PATH ;
3530 @ Value ("${FILE_NAME}" )
3631 private String FILE_NAME ;
37- @ Value ("${FLARESOLVERR_URL:#{null}}" )
38- @ Nullable
39- private String flareSolverrUrl ;
4032
4133 private final WebClientConfig webClientConfig ;
4234 private final ObjectMapper objectMapper ;
@@ -95,15 +87,8 @@ public List<LinhaDTO> getLinhasAPIBH() {
9587 }
9688
9789 public void getOnibusCoordenadaBH () throws IOException {
98- List <String > responses ;
99-
100- if (flareSolverrUrl != null && !flareSolverrUrl .isBlank ()) {
101- System .out .printf ("Usando FlareSolverr em: %s%n" , flareSolverrUrl );
102- responses = fetchCoordenadasViaFlareSolverr ();
103- } else {
104- System .out .printf ("Acessando diretamente sem FlareSolverr.%n" );
105- responses = fetchCoordenadasDirectly ();
106- }
90+ System .out .printf ("Acessando diretamente.%n" );
91+ List <String > responses = fetchCoordenadasDirectly ();
10792
10893 if (responses == null || responses .size () < 2 ) {
10994 throw new IllegalStateException ("Não foi possível obter resposta de um ou mais endpoints." );
@@ -126,34 +111,6 @@ private List<String> fetchCoordenadasDirectly() {
126111 return Flux .merge (monoParamD , monoParamSD ).collectList ().block ();
127112 }
128113
129- private List <String > fetchCoordenadasViaFlareSolverr () throws JsonProcessingException {
130- WebClient flareSolverrClient = WebClient .builder ()
131- .baseUrl (flareSolverrUrl + "/v1" )
132- .defaultHeader (HttpHeaders .CONTENT_TYPE , MediaType .APPLICATION_JSON_VALUE )
133- .build ();
134-
135- String cmdParamD = "{\" cmd\" : \" request.get\" , \" url\" : \" https://temporeal.pbh.gov.br/?param=D\" , \" maxTimeout\" : 60000}" ;
136- String cmdParamSD = "{\" cmd\" : \" request.get\" , \" url\" : \" https://temporeal.pbh.gov.br/?param=SD\" , \" maxTimeout\" : 60000}" ;
137-
138- Mono <String > monoResponseD = flareSolverrClient .post ().bodyValue (cmdParamD ).retrieve ().bodyToMono (String .class );
139- Mono <String > monoResponseSD = flareSolverrClient .post ().bodyValue (cmdParamSD ).retrieve ().bodyToMono (String .class );
140-
141- List <String > flareSolverrResponses = Flux .merge (monoResponseD , monoResponseSD ).collectList ().block ();
142-
143- if (flareSolverrResponses == null || flareSolverrResponses .size () < 2 ) {
144- return null ;
145- }
146-
147- // Extrai a resposta real do JSON do FlareSolverr
148- JsonNode rootNodeD = objectMapper .readTree (flareSolverrResponses .get (0 ));
149- String jsonD = rootNodeD .path ("solution" ).path ("response" ).asText ();
150-
151- JsonNode rootNodeSD = objectMapper .readTree (flareSolverrResponses .get (1 ));
152- String jsonSD = rootNodeSD .path ("solution" ).path ("response" ).asText ();
153-
154- return List .of (jsonD , jsonSD );
155- }
156-
157114 private void processAndSaveCoordenadas (List <String > responses ) throws IOException {
158115 String jsonD = responses .get (0 );
159116 String jsonSD = responses .get (1 );
@@ -181,4 +138,4 @@ private void processAndSaveCoordenadas(List<String> responses) throws IOExceptio
181138 throw new RuntimeException ("Erro ao processar o JSON das coordenadas." , e );
182139 }
183140 }
184- }
141+ }
0 commit comments