001package io.freefair.spring.okhttp.client;
002
003import lombok.NonNull;
004import okhttp3.OkHttpClient;
005import org.springframework.http.HttpMethod;
006import org.springframework.http.client.ClientHttpRequest;
007import org.springframework.http.client.ClientHttpRequestFactory;
008import java.net.URI;
009
010/**
011 * OkHttp based {@link ClientHttpRequestFactory} implementation.
012 * <p>
013 * Serves as replacement for the deprecated {@link org.springframework.http.client.OkHttp3ClientHttpRequestFactory}.
014 *
015 * @author Lars Grefer
016 */
017public record OkHttpClientRequestFactory(@NonNull OkHttpClient okHttpClient) implements ClientHttpRequestFactory {
018    public OkHttpClientRequestFactory {
019        if (okHttpClient == null) {
020            throw new IllegalArgumentException("okHttpClient is marked non-null but is null");
021        }
022    }
023
024    @Override
025    public ClientHttpRequest createRequest(URI uri, HttpMethod httpMethod) {
026        return new OkHttpClientRequest(okHttpClient, uri, httpMethod);
027    }
028}