Загрузка данных


dmitriev-aal@VDI-Dmitriev-A:~/Desktop/rshbintech/intrabank/hrplatform/hrtech$ sed -n '1,220p' adaptation/src/main/java/ru/rshbintech/intrabank/hrplatform/hrtech/adaptation/service/HttpService.java
package ru.rshbintech.intrabank.hrplatform.hrtech.adaptation.service;

import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.hc.client5.http.classic.HttpClient;
import org.apache.hc.client5.http.classic.methods.HttpGet;
import org.apache.hc.client5.http.classic.methods.HttpPost;
import org.apache.hc.core5.http.ClassicHttpRequest;
import org.apache.hc.core5.http.HttpStatus;
import org.apache.hc.core5.http.io.entity.EntityUtils;
import org.apache.hc.core5.http.io.entity.StringEntity;
import org.apache.hc.core5.http.message.BasicHeader;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.io.IOException;

@Slf4j
@Service
@RequiredArgsConstructor
public class HttpService {

    private final HttpClient httpClient;
    private final ObjectMapper objectMapper;

    public <T> T postRequest(String url, Object requestBody, Class<T> responseType) {
        try {
            HttpPost request = new HttpPost(url);
            String jsonBody = objectMapper.writeValueAsString(requestBody);

            request.setEntity(new StringEntity(jsonBody));
            request.setHeader(new BasicHeader("Content-Type", "application/json"));
            request.setHeader(new BasicHeader("Accept", "application/json"));

            var responseBody = execute(request);
            return StringUtils.hasText(responseBody)
                    ? objectMapper.readValue(responseBody, responseType)
                    : null;
        } catch (IOException e) {
            log.error("An exception occurred during serialization/deserialization: {}", e.getMessage(), e);
            return null;
        }
    }

    public <T> T getRequest(String url, Class<T> responseType) {
        try {
            HttpGet request = new HttpGet(url);
            request.setHeader(new BasicHeader("Content-Type", "application/json"));
            request.setHeader(new BasicHeader("Accept", "application/json"));

            var responseBody = execute(request);
            return StringUtils.hasText(responseBody)
                    ? objectMapper.readValue(responseBody, responseType)
                    : null;
        } catch (IOException e) {
            log.error("An exception occurred during serialization/deserialization: {}", e.getMessage(), e);
            return null;
        }
    }

    private String execute(ClassicHttpRequest request) throws IOException {
        return httpClient.execute(request,
                response -> {
                    if (response.getCode() >= HttpStatus.SC_OK
                            && response.getCode() < HttpStatus.SC_MULTIPLE_CHOICES) {
                        return EntityUtils.toString(response.getEntity());
                    }
                    log.error("An exception occurred during send request:{}\nstatusCode:{}\nresponseBody:{}",
                            request, response.getCode(), response.getEntity());
                    return null;
                });
    }

}