1 package civitas.bboard.server;
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStream;
6 import java.io.InputStreamReader;
7 import java.net.URI;
8
9 import org.springframework.http.HttpMethod;
10 import org.springframework.http.client.ClientHttpResponse;
11 import org.springframework.stereotype.Component;
12 import org.springframework.web.client.ResponseErrorHandler;
13
14 @Component
15 public class RestTemplateResponseErrorHandler implements ResponseErrorHandler {
16
17 @Override
18 public boolean hasError(final ClientHttpResponse httpResponse) throws IOException {
19 return httpResponse.getStatusCode().isError();
20 }
21
22 @Override
23 public void handleError(final URI url, final HttpMethod method, final ClientHttpResponse httpResponse)
24 throws IOException {
25 String content;
26
27 try (InputStream body = httpResponse.getBody();
28 InputStreamReader inputStreamReader = new InputStreamReader(body);
29 BufferedReader bufferedReader = new BufferedReader(inputStreamReader)) {
30 content = bufferedReader.lines().reduce(String::concat).get();
31 }
32
33 throw new Error(httpResponse.getStatusCode() + ":" + content);
34 }
35 }