
com.github.davidmoten.odata.client.HttpService Maven / Gradle / Ivy
package com.github.davidmoten.odata.client;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UncheckedIOException;
import java.net.HttpURLConnection;
import java.net.Proxy;
import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Function;
import com.github.davidmoten.odata.client.internal.DefaultHttpService;
public interface HttpService extends AutoCloseable {
HttpResponse get(String url, List requestHeaders);
HttpResponse patch(String url, List requestHeaders, InputStream content);
HttpResponse put(String url, List requestHeaders, InputStream content);
HttpResponse post(String url, List requestHeaders, InputStream content);
HttpResponse delete(String url, List requestHeaders);
InputStream getStream(String url, List requestHeaders);
default Optional getProxy() {
return Optional.empty();
}
Path getBasePath();
default HttpResponse patch(String url, List requestHeaders, String content) {
try (InputStream in = new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8))) {
return patch(url, requestHeaders, in);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
default HttpResponse put(String url, List requestHeaders, String content) {
try (InputStream in = new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8))) {
return put(url, requestHeaders, in);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
default HttpResponse post(String url, List requestHeaders, String content) {
try (InputStream in = new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8))) {
return post(url, requestHeaders, in);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
default HttpResponse submitWithContent(HttpMethod method, String url,
List requestHeaders, InputStream content) {
if (method == HttpMethod.PATCH) {
return patch(url, requestHeaders, content);
} else if (method == HttpMethod.PUT) {
return put(url, requestHeaders, content);
} else if (method == HttpMethod.POST) {
return put(url, requestHeaders, content);
} else {
throw new IllegalArgumentException(
method + " not permitted for a submission with content");
}
}
default HttpResponse submitWithContent(HttpMethod method, String url,
List requestHeaders, String content) {
try (InputStream in = new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8))) {
return submitWithContent(method, url, requestHeaders, in);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
default HttpResponse get(String url) {
return get(url, Collections.emptyList());
}
default InputStream getStream(String url) {
return getStream(url, Collections.emptyList());
}
default byte[] getBytes(String url) {
return getBytes(url, Collections.emptyList());
}
default byte[] getBytes(String url, List requestHeaders) {
return Util.toByteArray(getStream(url, requestHeaders));
}
default String getStringUtf8(String url) {
return getStringUtf8(url, Collections.emptyList());
}
default String getStringUtf8(String url, List requestHeaders) {
return new String(getBytes(url, requestHeaders), StandardCharsets.UTF_8);
}
public static HttpService createDefaultService(Path path,
Function, List> requestHeadersModifier,
Consumer consumer) {
return new DefaultHttpService(path, requestHeadersModifier, consumer);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy