
com.github.davidmoten.odata.client.StreamUploaderSingleCall Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of odata-client-runtime Show documentation
Show all versions of odata-client-runtime Show documentation
OData client runtime for use with generated code
The newest version!
package com.github.davidmoten.odata.client;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UncheckedIOException;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
import com.github.davidmoten.odata.client.internal.RequestHelper;
public final class StreamUploaderSingleCall implements StreamUploader {
private final ContextPath contextPath;
private final Map queries;
private final List requestHeaders;
private final HttpMethod method;
private Optional connectTimeoutMs = Optional.empty();
private Optional readTimeoutMs = Optional.empty();
public StreamUploaderSingleCall(ContextPath contextPath, String contentType, HttpMethod method) {
this.contextPath = contextPath;
this.queries = new HashMap<>();
this.requestHeaders = new ArrayList<>();
this.method = method;
requestHeaders.add(RequestHeader.contentType(contentType));
}
public StreamUploaderSingleCall requestHeader(String name, String value) {
requestHeaders.add(RequestHeader.create(name, value));
return this;
}
public StreamUploaderSingleCall connectTimeout(long duration, TimeUnit unit) {
this.connectTimeoutMs = Optional.of(unit.toMillis(duration));
return this;
}
public StreamUploaderSingleCall readTimeout(long duration, TimeUnit unit) {
this.readTimeoutMs = Optional.of(unit.toMillis(duration));
return this;
}
public void upload(byte[] bytes) {
upload(new ByteArrayInputStream(bytes), bytes.length);
}
public void uploadUtf8(String text) {
upload(text.getBytes(StandardCharsets.UTF_8));
}
public void upload(File file) {
try (InputStream in = new FileInputStream(file)) {
upload(in, (int) file.length());
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
public void upload(InputStream in, int length) {
requestHeaders.add(RequestHeader.contentRange(0, length - 1, length));
RequestHelper.send(method, contextPath, RequestOptions.create(queries, requestHeaders, connectTimeoutMs, readTimeoutMs), in, length);
}
public void upload(InputStream in, int length, UploadListener listener, int reportingChunkSize) {
upload(new InputStreamWithProgress(in, reportingChunkSize, listener), length);
}
public void upload(InputStream in, int length, UploadListener listener) {
upload(in, length, listener, 8192);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy