001package co.codewizards.cloudstore.rest.client.request;
002
003import static java.util.Objects.*;
004
005import javax.ws.rs.client.Entity;
006import javax.ws.rs.client.WebTarget;
007import javax.ws.rs.core.MediaType;
008import javax.ws.rs.core.Response;
009
010public class PutFileData extends VoidRequest {
011        private final String repositoryName;
012        private final String path;
013        private final long offset;
014        private final byte[] fileData;
015
016        public PutFileData(final String repositoryName, final String path, final long offset, final byte[] fileData) {
017                this.repositoryName = requireNonNull(repositoryName, "repositoryName");
018                this.path = requireNonNull(path, "path");
019                this.offset = offset;
020                this.fileData = requireNonNull(fileData, "fileData");
021        }
022
023        @Override
024        protected Response _execute() {
025                WebTarget webTarget = createWebTarget(urlEncode(repositoryName), encodePath(path));
026
027                if (offset > 0)
028                        webTarget = webTarget.queryParam("offset", offset);
029
030                return assignCredentials(webTarget.request()).put(Entity.entity(fileData, MediaType.APPLICATION_OCTET_STREAM));
031        }
032}