Commit 31a188aa authored by Greg Messner's avatar Greg Messner
Browse files

Fixed issue when uploading files when a proxy is being used (#284).

parent ec05c595
...@@ -39,6 +39,7 @@ import org.glassfish.jersey.apache.connector.ApacheConnectorProvider; ...@@ -39,6 +39,7 @@ import org.glassfish.jersey.apache.connector.ApacheConnectorProvider;
import org.glassfish.jersey.client.ClientConfig; import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.client.ClientProperties; import org.glassfish.jersey.client.ClientProperties;
import org.glassfish.jersey.logging.LoggingFeature; import org.glassfish.jersey.logging.LoggingFeature;
import org.glassfish.jersey.media.multipart.Boundary;
import org.glassfish.jersey.media.multipart.FormDataMultiPart; import org.glassfish.jersey.media.multipart.FormDataMultiPart;
import org.glassfish.jersey.media.multipart.MultiPart; import org.glassfish.jersey.media.multipart.MultiPart;
import org.glassfish.jersey.media.multipart.MultiPartFeature; import org.glassfish.jersey.media.multipart.MultiPartFeature;
...@@ -557,7 +558,8 @@ public class GitLabApiClient { ...@@ -557,7 +558,8 @@ public class GitLabApiClient {
new FileDataBodyPart(name, fileToUpload, mediaType) : new FileDataBodyPart(name, fileToUpload, mediaType) :
new FileDataBodyPart(name, fileToUpload); new FileDataBodyPart(name, fileToUpload);
multiPart.bodyPart(filePart); multiPart.bodyPart(filePart);
return (invocation(url, null).post(Entity.entity(multiPart, MULTIPART_FORM_DATA_TYPE))); final Entity<?> entity = Entity.entity(multiPart, Boundary.addBoundary(multiPart.getMediaType()));
return (invocation(url, null).post(entity));
} }
} }
...@@ -588,9 +590,12 @@ public class GitLabApiClient { ...@@ -588,9 +590,12 @@ public class GitLabApiClient {
* @throws IOException if an error occurs while constructing the URL * @throws IOException if an error occurs while constructing the URL
*/ */
protected Response putUpload(String name, File fileToUpload, URL url) throws IOException { protected Response putUpload(String name, File fileToUpload, URL url) throws IOException {
final FormDataMultiPart multiPart = new FormDataMultiPart();
multiPart.bodyPart(new FileDataBodyPart(name, fileToUpload, MediaType.APPLICATION_OCTET_STREAM_TYPE)); try (MultiPart multiPart = new FormDataMultiPart()) {
return (invocation(url, null).put(Entity.entity(multiPart, MULTIPART_FORM_DATA_TYPE))); multiPart.bodyPart(new FileDataBodyPart(name, fileToUpload, MediaType.APPLICATION_OCTET_STREAM_TYPE));
final Entity<?> entity = Entity.entity(multiPart, Boundary.addBoundary(multiPart.getMediaType()));
return (invocation(url, null).put(entity));
}
} }
/** /**
......
...@@ -5,9 +5,11 @@ import static org.junit.Assert.assertTrue; ...@@ -5,9 +5,11 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeTrue; import static org.junit.Assume.assumeTrue;
import java.io.File; import java.io.File;
import java.util.Map;
import org.gitlab4j.api.GitLabApi.ApiVersion; import org.gitlab4j.api.GitLabApi.ApiVersion;
import org.gitlab4j.api.models.Project; import org.gitlab4j.api.models.Project;
import org.gitlab4j.api.models.Version;
import org.junit.Before; import org.junit.Before;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.FixMethodOrder; import org.junit.FixMethodOrder;
...@@ -32,13 +34,21 @@ public class TestAvatarUpload { ...@@ -32,13 +34,21 @@ public class TestAvatarUpload {
private static final String TEST_NAMESPACE; private static final String TEST_NAMESPACE;
private static final String TEST_HOST_URL; private static final String TEST_HOST_URL;
private static final String TEST_PRIVATE_TOKEN; private static final String TEST_PRIVATE_TOKEN;
private static final String TEST_PROXY_URI;
private static final String TEST_PROXY_USERNAME;
private static final String TEST_PROXY_PASSWORD;
static { static {
TEST_NAMESPACE = TestUtils.getProperty("TEST_NAMESPACE"); TEST_NAMESPACE = TestUtils.getProperty("TEST_NAMESPACE");
TEST_PROJECT_NAME = TestUtils.getProperty("TEST_PROJECT_NAME"); TEST_PROJECT_NAME = TestUtils.getProperty("TEST_PROJECT_NAME");
TEST_HOST_URL = TestUtils.getProperty("TEST_HOST_URL"); TEST_HOST_URL = TestUtils.getProperty("TEST_HOST_URL");
TEST_PRIVATE_TOKEN = TestUtils.getProperty("TEST_PRIVATE_TOKEN"); TEST_PRIVATE_TOKEN = TestUtils.getProperty("TEST_PRIVATE_TOKEN");
TEST_PROXY_URI = TestUtils.getProperty("TEST_PROXY_URI");
TEST_PROXY_USERNAME = TestUtils.getProperty("TEST_PROXY_USERNAME");
TEST_PROXY_PASSWORD = TestUtils.getProperty("TEST_PROXY_PASSWORD");
} }
private static final String AVATAR_FILENAME = "avatar.png";
private static GitLabApi gitLabApi; private static GitLabApi gitLabApi;
public TestAvatarUpload() { public TestAvatarUpload() {
...@@ -83,9 +93,28 @@ public class TestAvatarUpload { ...@@ -83,9 +93,28 @@ public class TestAvatarUpload {
Project project = gitLabApi.getProjectApi().getProject(TEST_NAMESPACE, TEST_PROJECT_NAME); Project project = gitLabApi.getProjectApi().getProject(TEST_NAMESPACE, TEST_PROJECT_NAME);
assertNotNull(project); assertNotNull(project);
File avatarFile = new File("src/test/resources/org/gitlab4j/api/avatar.png"); File avatarFile = new File("src/test/resources/org/gitlab4j/api", AVATAR_FILENAME);
Project updatedProject = gitLabApi.getProjectApi().setProjectAvatar(project.getId(), avatarFile);
assertNotNull(updatedProject);
assertTrue(updatedProject.getAvatarUrl().endsWith(AVATAR_FILENAME));
}
@Test
public void testSetProjectAvatarWithProxy() throws GitLabApiException {
assumeTrue(TEST_PROXY_URI != null && TEST_PROXY_USERNAME != null && TEST_PROXY_PASSWORD != null);
assumeTrue(TEST_PROXY_URI.length() > 0 && TEST_PROXY_USERNAME.length() > 0 && TEST_PROXY_PASSWORD.length() > 0);
// Setup a GitLabApi instance to use a proxy
Map<String, Object> clientConfig = ProxyClientConfig.createProxyClientConfig(TEST_PROXY_URI, TEST_PROXY_USERNAME, TEST_PROXY_PASSWORD);
GitLabApi gitLabApi = new GitLabApi(TEST_HOST_URL, TEST_PRIVATE_TOKEN, null, clientConfig);
Project project = gitLabApi.getProjectApi().getProject(TEST_NAMESPACE, TEST_PROJECT_NAME);
assertNotNull(project);
File avatarFile = new File("src/test/resources/org/gitlab4j/api", AVATAR_FILENAME);
Project updatedProject = gitLabApi.getProjectApi().setProjectAvatar(project.getId(), avatarFile); Project updatedProject = gitLabApi.getProjectApi().setProjectAvatar(project.getId(), avatarFile);
assertNotNull(updatedProject); assertNotNull(updatedProject);
assertTrue(updatedProject.getAvatarUrl().endsWith("avatar.png")); assertTrue(updatedProject.getAvatarUrl().endsWith(AVATAR_FILENAME));
} }
} }
package org.gitlab4j.api; package org.gitlab4j.api;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeTrue; import static org.junit.Assume.assumeTrue;
import java.io.File; import java.io.File;
import java.util.Map;
import org.gitlab4j.api.GitLabApi.ApiVersion; import org.gitlab4j.api.GitLabApi.ApiVersion;
import org.gitlab4j.api.models.FileUpload; import org.gitlab4j.api.models.FileUpload;
...@@ -32,11 +34,17 @@ public class TestFileUpload { ...@@ -32,11 +34,17 @@ public class TestFileUpload {
private static final String TEST_NAMESPACE; private static final String TEST_NAMESPACE;
private static final String TEST_HOST_URL; private static final String TEST_HOST_URL;
private static final String TEST_PRIVATE_TOKEN; private static final String TEST_PRIVATE_TOKEN;
private static final String TEST_PROXY_URI;
private static final String TEST_PROXY_USERNAME;
private static final String TEST_PROXY_PASSWORD;
static { static {
TEST_NAMESPACE = TestUtils.getProperty("TEST_NAMESPACE"); TEST_NAMESPACE = TestUtils.getProperty("TEST_NAMESPACE");
TEST_PROJECT_NAME = TestUtils.getProperty("TEST_PROJECT_NAME"); TEST_PROJECT_NAME = TestUtils.getProperty("TEST_PROJECT_NAME");
TEST_HOST_URL = TestUtils.getProperty("TEST_HOST_URL"); TEST_HOST_URL = TestUtils.getProperty("TEST_HOST_URL");
TEST_PRIVATE_TOKEN = TestUtils.getProperty("TEST_PRIVATE_TOKEN"); TEST_PRIVATE_TOKEN = TestUtils.getProperty("TEST_PRIVATE_TOKEN");
TEST_PROXY_URI = TestUtils.getProperty("TEST_PROXY_URI");
TEST_PROXY_USERNAME = TestUtils.getProperty("TEST_PROXY_USERNAME");
TEST_PROXY_PASSWORD = TestUtils.getProperty("TEST_PROXY_PASSWORD");
} }
private static GitLabApi gitLabApi; private static GitLabApi gitLabApi;
...@@ -98,4 +106,22 @@ public class TestFileUpload { ...@@ -98,4 +106,22 @@ public class TestFileUpload {
FileUpload fileUpload = gitLabApi.getProjectApi().uploadFile(project.getId(), fileToUpload, "text/markdown"); FileUpload fileUpload = gitLabApi.getProjectApi().uploadFile(project.getId(), fileToUpload, "text/markdown");
assertNotNull(fileUpload); assertNotNull(fileUpload);
} }
@Test
public void testFileUploadWithProxy() throws GitLabApiException {
assumeTrue(TEST_PROXY_URI != null && TEST_PROXY_USERNAME != null && TEST_PROXY_PASSWORD != null);
assumeTrue(TEST_PROXY_URI.length() > 0 && TEST_PROXY_USERNAME.length() > 0 && TEST_PROXY_PASSWORD.length() > 0);
// Setup a GitLabApi instance to use a proxy
Map<String, Object> clientConfig = ProxyClientConfig.createProxyClientConfig(TEST_PROXY_URI, TEST_PROXY_USERNAME, TEST_PROXY_PASSWORD);
GitLabApi gitLabApi = new GitLabApi(TEST_HOST_URL, TEST_PRIVATE_TOKEN, null, clientConfig);
Project project = gitLabApi.getProjectApi().getProject(TEST_NAMESPACE, TEST_PROJECT_NAME);
assertNotNull(project);
File fileToUpload = new File("README.md");
FileUpload fileUpload = gitLabApi.getProjectApi().uploadFile(project.getId(), fileToUpload, null);
assertNotNull(fileUpload);
}
} }
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment