package net.gepafin.tendermanagement.dao; import feign.FeignException; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.service.feignClient.VatCheckService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import java.net.URI; import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; @Component public class VatCheckDao { @Autowired private VatCheckService vatCheckService; @Value("${vatCheckNewToken}") public String vatCheckNewToken; @Value("${isVatCheckGloballyDisabled}") public String isVatCheckGloballyDisabled; public final Logger log = LoggerFactory.getLogger(VatCheckDao.class); public Map checkVatNumberApi(String vatNumber) { if (Boolean.TRUE.equals(Boolean.parseBoolean(isVatCheckGloballyDisabled))) { return new HashMap<>(); } Map responseBody = new HashMap<>(); try { HttpHeaders headers = new HttpHeaders(); headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); headers.setContentType(MediaType.APPLICATION_JSON); headers.set(GepafinConstant.AUTHORIZATION, "Bearer " + vatCheckNewToken); headers.add(org.apache.http.HttpHeaders.USER_AGENT, "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"); URI baseUrl = URI.create(GepafinConstant.CHECK_VATNUMBER_V2_NEW_URL); ResponseEntity> response = vatCheckService.checkVatNumber(baseUrl,vatNumber, headers); if (response.getStatusCode() == HttpStatus.OK && response.hasBody()) { log.info("Successfully checked vat number"); Map responseMap = response.getBody(); if (responseMap != null && responseMap.containsKey("data")) { responseBody = (Map) responseMap.get("data"); responseBody.remove("timestamp_creation"); responseBody.remove("timestamp_last_update"); responseBody.remove("data_iscrizione"); responseBody.remove("id"); Map data = new LinkedHashMap<>(); data.put("data", responseBody); return data; } } } catch (FeignException ex) { log.error("Exception occurred while checking vat number: {0}", ex); throw ex; } return responseBody; } }