use of org.glassfish.jersey.media.multipart.FormDataBodyPart in project cyberduck by iterate-ch.
the class ApiClient method serialize.
/**
* Serialize the given Java object into string entity according the given
* Content-Type (only JSON is supported for now).
* @param obj Object
* @param formParams Form parameters
* @param contentType Context type
* @return Entity
* @throws ApiException API exception
*/
public Entity<?> serialize(Object obj, Map<String, Object> formParams, String contentType) throws ApiException {
Entity<?> entity;
if (contentType.startsWith("multipart/form-data")) {
MultiPart multiPart = new MultiPart();
for (Entry<String, Object> param : formParams.entrySet()) {
if (param.getValue() instanceof File) {
File file = (File) param.getValue();
FormDataContentDisposition contentDisp = FormDataContentDisposition.name(param.getKey()).fileName(file.getName()).size(file.length()).build();
multiPart.bodyPart(new FormDataBodyPart(contentDisp, file, MediaType.APPLICATION_OCTET_STREAM_TYPE));
} else {
FormDataContentDisposition contentDisp = FormDataContentDisposition.name(param.getKey()).build();
multiPart.bodyPart(new FormDataBodyPart(contentDisp, parameterToString(param.getValue())));
}
}
entity = Entity.entity(multiPart, MediaType.MULTIPART_FORM_DATA_TYPE);
} else if (contentType.startsWith("application/x-www-form-urlencoded")) {
Form form = new Form();
for (Entry<String, Object> param : formParams.entrySet()) {
form.param(param.getKey(), parameterToString(param.getValue()));
}
entity = Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE);
} else {
// We let jersey handle the serialization
entity = Entity.entity(obj, contentType);
}
return entity;
}
use of org.glassfish.jersey.media.multipart.FormDataBodyPart in project cyberduck by iterate-ch.
the class ApiClient method serialize.
/**
* Serialize the given Java object into string entity according the given
* Content-Type (only JSON is supported for now).
* @param obj Object
* @param formParams Form parameters
* @param contentType Context type
* @return Entity
* @throws ApiException API exception
*/
public Entity<?> serialize(Object obj, Map<String, Object> formParams, String contentType) throws ApiException {
Entity<?> entity;
if (contentType.startsWith("multipart/form-data")) {
MultiPart multiPart = new MultiPart();
for (Entry<String, Object> param : formParams.entrySet()) {
if (param.getValue() instanceof File) {
File file = (File) param.getValue();
FormDataContentDisposition contentDisp = FormDataContentDisposition.name(param.getKey()).fileName(file.getName()).size(file.length()).build();
multiPart.bodyPart(new FormDataBodyPart(contentDisp, file, MediaType.APPLICATION_OCTET_STREAM_TYPE));
} else {
FormDataContentDisposition contentDisp = FormDataContentDisposition.name(param.getKey()).build();
multiPart.bodyPart(new FormDataBodyPart(contentDisp, parameterToString(param.getValue())));
}
}
entity = Entity.entity(multiPart, MediaType.MULTIPART_FORM_DATA_TYPE);
} else if (contentType.startsWith("application/x-www-form-urlencoded")) {
Form form = new Form();
for (Entry<String, Object> param : formParams.entrySet()) {
form.param(param.getKey(), parameterToString(param.getValue()));
}
entity = Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE);
} else {
// We let jersey handle the serialization
entity = Entity.entity(obj, contentType);
}
return entity;
}
use of org.glassfish.jersey.media.multipart.FormDataBodyPart in project logbook by zalando.
the class ClientAndServerIgnoringBodyTest method multiPartFormDataAndSimulatedFileUpload.
@Test
void multiPartFormDataAndSimulatedFileUpload() throws IOException {
final MultiPart multiPart = new MultiPart();
multiPart.setMediaType(MULTIPART_FORM_DATA_TYPE);
target("testws/testPostForm").request().header("Ignore", true).post(entity(multiPart.bodyPart(new StreamDataBodyPart("testFileFormField", new ByteArrayInputStream("I am text file content".getBytes(UTF_8)), "testUploadedFilename", TEXT_PLAIN_TYPE)).bodyPart(new FormDataBodyPart("name", "nameValue!@#$%")).bodyPart(new FormDataBodyPart("age", "-99")), multiPart.getMediaType()), String.class);
final RoundTrip roundTrip = getRoundTrip();
assertEquals("", roundTrip.getClientRequest().getBodyAsString());
assertEquals("", roundTrip.getClientResponse().getBodyAsString());
assertEquals("", roundTrip.getServerRequest().getBodyAsString());
assertEquals("", roundTrip.getServerResponse().getBodyAsString());
}
use of org.glassfish.jersey.media.multipart.FormDataBodyPart in project logbook by zalando.
the class ClientAndServerTest method multiPartFormDataAndSimulatedFileUpload.
@Test
void multiPartFormDataAndSimulatedFileUpload() throws IOException {
final MultiPart multiPart = new MultiPart();
multiPart.setMediaType(MULTIPART_FORM_DATA_TYPE);
final String result = target("testws/testPostForm").request().post(entity(multiPart.bodyPart(new StreamDataBodyPart("testFileFormField", new ByteArrayInputStream("I am text file content".getBytes(UTF_8)), "testUploadedFilename", TEXT_PLAIN_TYPE)).bodyPart(new FormDataBodyPart("name", "nameValue!@#$%")).bodyPart(new FormDataBodyPart("age", "-99")), multiPart.getMediaType()), String.class);
final RoundTrip roundTrip = getRoundTrip();
final HttpRequest clientRequest = roundTrip.getClientRequest();
final HttpResponse clientResponse = roundTrip.getClientResponse();
final HttpRequest serverRequest = roundTrip.getServerRequest();
final HttpResponse serverResponse = roundTrip.getServerResponse();
assertEquals("name was nameValue!@#$% age was -99 file was I am text file content", result);
// client request
assertEquals("HTTP/1.1", clientRequest.getProtocolVersion());
assertEquals("POST", clientRequest.getMethod());
assertEquals(LOCAL, clientRequest.getOrigin());
assertEquals("localhost", clientRequest.getRemote());
assertEquals("http", clientRequest.getScheme());
assertEquals("localhost", clientRequest.getHost());
assertEquals(Optional.of(this.getPort()), clientRequest.getPort());
assertEquals("/testws/testPostForm", clientRequest.getPath());
assertEquals("", clientRequest.getQuery());
assertNotEquals("", clientRequest.getBodyAsString());
// client response
assertEquals("HTTP/1.1", clientResponse.getProtocolVersion());
assertEquals("text/plain", clientResponse.getHeaders().get("Content-type").get(0));
assertEquals("67", clientResponse.getHeaders().get("Content-length").get(0));
assertEquals("name was nameValue!@#$% age was -99 file was I am text file content", clientResponse.getBodyAsString());
assertEquals("text/plain", clientResponse.getContentType());
assertEquals("HTTP/1.1", clientResponse.getProtocolVersion());
assertEquals(200, clientResponse.getStatus());
assertEquals(REMOTE, clientResponse.getOrigin());
assertEquals(UTF_8, clientResponse.getCharset());
// server request
assertEquals("HTTP/1.1", serverRequest.getProtocolVersion());
assertEquals("POST", serverRequest.getMethod());
assertEquals(REMOTE, serverRequest.getOrigin());
assertEquals("localhost:" + this.getPort(), serverRequest.getRemote());
assertEquals("http", serverRequest.getScheme());
assertEquals("localhost", serverRequest.getHost());
assertEquals(Optional.of(this.getPort()), serverRequest.getPort());
assertEquals("/testws/testPostForm", serverRequest.getPath());
assertEquals("", serverRequest.getQuery());
assertThat(serverRequest.getHeaders().get("User-Agent")).as("serverRequest userAgent").allSatisfy(userAgent -> assertThat(userAgent).contains("Jersey"));
assertNotEquals("", serverRequest.getBodyAsString());
// server response
assertEquals("HTTP/1.1", serverResponse.getProtocolVersion());
assertEquals("text/plain", serverResponse.getHeaders().get("Content-type").get(0));
assertEquals("name was nameValue!@#$% age was -99 file was I am text file content", serverResponse.getBodyAsString());
assertEquals("text/plain", serverResponse.getContentType());
assertEquals("HTTP/1.1", serverResponse.getProtocolVersion());
assertEquals(200, serverResponse.getStatus());
assertEquals(LOCAL, serverResponse.getOrigin());
assertEquals(UTF_8, serverResponse.getCharset());
}
use of org.glassfish.jersey.media.multipart.FormDataBodyPart in project logbook by zalando.
the class ClientAndServerWithoutBodyTest method multiPartFormDataAndSimulatedFileUpload.
@Test
void multiPartFormDataAndSimulatedFileUpload() throws IOException {
final MultiPart multiPart = new MultiPart();
multiPart.setMediaType(MULTIPART_FORM_DATA_TYPE);
target("testws/testPostForm").request().header("Ignore", true).post(entity(multiPart.bodyPart(new StreamDataBodyPart("testFileFormField", new ByteArrayInputStream("I am text file content".getBytes(UTF_8)), "testUploadedFilename", TEXT_PLAIN_TYPE)).bodyPart(new FormDataBodyPart("name", "nameValue!@#$%")).bodyPart(new FormDataBodyPart("age", "-99")), multiPart.getMediaType()), String.class);
final RoundTrip roundTrip = getRoundTrip();
assertEquals("", roundTrip.getClientRequest().getBodyAsString());
assertEquals("", roundTrip.getClientResponse().getBodyAsString());
assertEquals("", roundTrip.getServerRequest().getBodyAsString());
assertEquals("", roundTrip.getServerResponse().getBodyAsString());
}
Aggregations