RequestExecutor.java

package org.jsoup.helper;

import static org.jsoup.helper.HttpConnection.Request;
import static org.jsoup.helper.HttpConnection.Response;

import org.jspecify.annotations.Nullable;

import java.io.IOException;
import java.io.InputStream;

/**
 A shim interface to support both HttpURLConnection and HttpClient implementations, in a multi-version jar.
 */
abstract class RequestExecutor {
    final Request req;
    final @Nullable Response prevRes;

    RequestExecutor(Request request, @Nullable Response previousResponse) {
        this.req = request;
        this.prevRes = previousResponse;
    }

    abstract Response execute() throws IOException;

    abstract InputStream responseBody() throws IOException;

    abstract void safeClose();
}