Search in sources :

Example 16 with FormDataBodyPart

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;
}
Also used : Entry(java.util.Map.Entry) MultiPart(org.glassfish.jersey.media.multipart.MultiPart) Form(javax.ws.rs.core.Form) FormDataBodyPart(org.glassfish.jersey.media.multipart.FormDataBodyPart) FormDataContentDisposition(org.glassfish.jersey.media.multipart.FormDataContentDisposition) File(java.io.File)

Example 17 with FormDataBodyPart

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;
}
Also used : Entry(java.util.Map.Entry) MultiPart(org.glassfish.jersey.media.multipart.MultiPart) Form(javax.ws.rs.core.Form) FormDataBodyPart(org.glassfish.jersey.media.multipart.FormDataBodyPart) FormDataContentDisposition(org.glassfish.jersey.media.multipart.FormDataContentDisposition) File(java.io.File)

Example 18 with FormDataBodyPart

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());
}
Also used : StreamDataBodyPart(org.glassfish.jersey.media.multipart.file.StreamDataBodyPart) MultiPart(org.glassfish.jersey.media.multipart.MultiPart) ByteArrayInputStream(java.io.ByteArrayInputStream) FormDataBodyPart(org.glassfish.jersey.media.multipart.FormDataBodyPart) JerseyTest(org.glassfish.jersey.test.JerseyTest) Test(org.junit.jupiter.api.Test)

Example 19 with FormDataBodyPart

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());
}
Also used : StreamDataBodyPart(org.glassfish.jersey.media.multipart.file.StreamDataBodyPart) HttpRequest(org.zalando.logbook.HttpRequest) MultiPart(org.glassfish.jersey.media.multipart.MultiPart) ByteArrayInputStream(java.io.ByteArrayInputStream) FormDataBodyPart(org.glassfish.jersey.media.multipart.FormDataBodyPart) HttpResponse(org.zalando.logbook.HttpResponse) JerseyTest(org.glassfish.jersey.test.JerseyTest) Test(org.junit.jupiter.api.Test)

Example 20 with FormDataBodyPart

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());
}
Also used : StreamDataBodyPart(org.glassfish.jersey.media.multipart.file.StreamDataBodyPart) MultiPart(org.glassfish.jersey.media.multipart.MultiPart) ByteArrayInputStream(java.io.ByteArrayInputStream) FormDataBodyPart(org.glassfish.jersey.media.multipart.FormDataBodyPart) JerseyTest(org.glassfish.jersey.test.JerseyTest) Test(org.junit.jupiter.api.Test)

Aggregations

FormDataBodyPart (org.glassfish.jersey.media.multipart.FormDataBodyPart)95 FormDataMultiPart (org.glassfish.jersey.media.multipart.FormDataMultiPart)52 File (java.io.File)33 Test (org.junit.Test)29 MultiPart (org.glassfish.jersey.media.multipart.MultiPart)28 Response (javax.ws.rs.core.Response)27 WebTarget (javax.ws.rs.client.WebTarget)19 InputStream (java.io.InputStream)17 JerseyTest (org.glassfish.jersey.test.JerseyTest)17 Map (java.util.Map)14 FormDataContentDisposition (org.glassfish.jersey.media.multipart.FormDataContentDisposition)14 IOException (java.io.IOException)12 HashMap (java.util.HashMap)12 List (java.util.List)12 Consumes (javax.ws.rs.Consumes)12 POST (javax.ws.rs.POST)11 Form (javax.ws.rs.core.Form)11 Entry (java.util.Map.Entry)10 Produces (javax.ws.rs.Produces)9 MediaType (javax.ws.rs.core.MediaType)9