package org.jboss.resteasy.test.providers.multipart.resource;

import org.jboss.resteasy.plugins.providers.multipart.InputPart;
import org.jboss.resteasy.plugins.providers.multipart.MultipartInput;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.io.IOException;

@Path("")
public class EmbeddedMultipartResource {
   @Path("embedded")
   @POST
   @Consumes("multipart/mixed")
   @Produces(MediaType.TEXT_PLAIN)
   public Response post(MultipartInput input) throws Exception {
      InputPart inputPart = input.getParts().iterator().next();
      MultipartInput multipart = inputPart.getBody(MultipartInput.class, null);
      inputPart = multipart.getParts().iterator().next();
      EmbeddedMultipartCustomer customer = inputPart.getBody(EmbeddedMultipartCustomer.class, null);
      return Response.ok(customer.getName()).build();
   }

   @Path("customer")
   @POST
   @Consumes("multipart/mixed")
   @Produces(MediaType.TEXT_PLAIN)
   public Response postCustomer(MultipartInput input) throws IOException {
      InputPart part = input.getParts().iterator().next();
      EmbeddedMultipartCustomer customer = part.getBody(EmbeddedMultipartCustomer.class, null);
      return Response.ok(customer.getName()).build();
   }

   @Path("invalid")
   @POST
   @Consumes("multipart/mixed")
   @Produces(MediaType.TEXT_PLAIN)
   public Response postInvalid(MultipartInput input) throws IOException {
      InputPart part = input.getParts().iterator().next();
      Object o = part.getBody(EmbeddedMultipartResource.class, null);
      return Response.ok(o).build();
   }
}
