All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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