001package co.codewizards.cloudstore.rest.client.request; 002 003import static java.util.Objects.*; 004 005import javax.ws.rs.client.WebTarget; 006import javax.ws.rs.core.MediaType; 007 008public class GetFileData extends AbstractRequest<byte[]> { 009 private final String repositoryName; 010 private final String path; 011 private final long offset; 012 private final int length; 013 014 public GetFileData(final String repositoryName, final String path, final long offset, final int length) { 015 this.repositoryName = requireNonNull(repositoryName, "repositoryName"); 016 this.path = path; 017 this.offset = offset; 018 this.length = length; 019 } 020 021 @Override 022 public byte[] execute() { 023 WebTarget webTarget = createWebTarget(urlEncode(repositoryName), encodePath(path)); 024 025 if (offset > 0) // defaults to 0 026 webTarget = webTarget.queryParam("offset", offset); 027 028 if (length >= 0) // defaults to -1 meaning "all" 029 webTarget = webTarget.queryParam("length", length); 030 031 return assignCredentials(webTarget.request(MediaType.APPLICATION_OCTET_STREAM)).get(byte[].class); 032 } 033 034 @Override 035 public boolean isResultNullable() { 036 return false; 037 } 038}