
fi.evolver.basics.spring.http.HttpStreamResponse Maven / Gradle / Ivy
package fi.evolver.basics.spring.http;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.net.http.HttpResponse;
import java.net.http.HttpTimeoutException;
import java.util.List;
import java.util.Map;
import org.springframework.http.HttpStatus;
public class HttpStreamResponse implements Closeable {
private final String statusCode;
private final String statusMessage;
private final InputStream inputStream;
private final Map> headers;
private final boolean success;
public HttpStreamResponse(String statusCode, String statusMessage, InputStream inputStream, Map> headers, boolean success) {
this.statusCode = statusCode;
this.statusMessage = statusMessage;
this.inputStream = inputStream;
this.headers = headers;
this.success = success;
}
public String getStatusCode() {
return statusCode;
}
public String getStatusMessage() {
return statusMessage;
}
public InputStream getMessage() {
return inputStream;
}
public Map> getHeaders() {
return headers;
}
public boolean isSuccess() {
return success;
}
@Override
public void close() throws IOException {
if (inputStream != null)
inputStream.close();
}
static HttpStreamResponse create(HttpResponse httpResponse, boolean success) {
String statusCode = Integer.toString(httpResponse.statusCode());
String statusMessage = HttpStatus.valueOf(httpResponse.statusCode()).getReasonPhrase();
return new HttpStreamResponse(
statusCode,
statusMessage,
httpResponse.body(),
httpResponse.headers().map(),
success);
}
static HttpStreamResponse create(Throwable throwable) {
String statusCode = "ERROR";
if (throwable instanceof HttpTimeoutException)
statusCode = "TIMEOUT";
if (throwable instanceof InterruptedException)
statusCode = "INTERRUPTED";
return new HttpStreamResponse(
statusCode,
throwable.toString(),
null,
Map.of(),
false);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy