001package co.codewizards.cloudstore.rest.client.request;
002
003import static java.util.Objects.*;
004
005import javax.ws.rs.client.Entity;
006import javax.ws.rs.core.MediaType;
007import javax.ws.rs.core.Response;
008
009import co.codewizards.cloudstore.core.dto.RepositoryDto;
010
011public class RequestRepoConnection extends VoidRequest {
012        private final String repositoryName;
013        private final String pathPrefix;
014        private final RepositoryDto clientRepositoryDto;
015
016        public RequestRepoConnection(final String repositoryName, final String pathPrefix, final RepositoryDto clientRepositoryDto) {
017                this.repositoryName = requireNonNull(repositoryName, "repositoryName");
018                this.pathPrefix = pathPrefix;
019                this.clientRepositoryDto = requireNonNull(clientRepositoryDto, "clientRepositoryDto");
020                requireNonNull(clientRepositoryDto.getRepositoryId(), "clientRepositoryDto.repositoryId");
021                requireNonNull(clientRepositoryDto.getPublicKey(), "clientRepositoryDto.publicKey");
022        }
023
024        @Override
025        public Response _execute() {
026                return createWebTarget("_requestRepoConnection", urlEncode(repositoryName), urlEncode(pathPrefix))
027                                .request().post(Entity.entity(clientRepositoryDto, MediaType.APPLICATION_XML));
028        }
029
030}