1 package com.atlassian.plugins.rest.multipart;
2
3 import com.atlassian.plugins.rest.common.interceptor.InterceptorChain;
4 import com.atlassian.plugins.rest.common.multipart.FilePart;
5 import com.atlassian.plugins.rest.common.multipart.MultipartConfig;
6 import com.atlassian.plugins.rest.common.multipart.MultipartConfigClass;
7 import com.atlassian.plugins.rest.common.multipart.MultipartFormParam;
8 import com.atlassian.plugins.rest.common.security.AnonymousAllowed;
9 import com.atlassian.plugins.rest.interceptor.Message;
10 import com.atlassian.plugins.rest.interceptor.MessageInterceptor;
11
12 import java.util.ArrayList;
13 import java.util.Collection;
14 import javax.ws.rs.POST;
15 import javax.ws.rs.Path;
16
17
18
19 @Path("/multipart")
20 @AnonymousAllowed
21 public class MultipartResource {
22 @POST
23 @Path("single")
24 public FilePartObject showMultipartSingle(@MultipartFormParam("file") FilePart filePart) {
25 return new FilePartObject("file", filePart.isFormField(), filePart.getName(), filePart.getContentType(), filePart.getValue());
26 }
27
28 @POST
29 @Path("multiple")
30 public FilePartObjects showMultipartMultiple(@MultipartFormParam("file") Collection<FilePart> fileParts) {
31 Collection<FilePartObject> objects = new ArrayList<FilePartObject>();
32 for (FilePart filePart : fileParts) {
33 objects.add(new FilePartObject("file", filePart.isFormField(), filePart.getName(), filePart.getContentType(), filePart.getValue()));
34 }
35 return new FilePartObjects(objects);
36 }
37
38 @POST
39 @Path("config")
40 @MultipartConfigClass(MultipartResource.SmallMultipartConfig.class)
41 public FilePartObjects showMultipartConfig(@MultipartFormParam("file") Collection<FilePart> fileParts) {
42 Collection<FilePartObject> objects = new ArrayList<FilePartObject>();
43 for (FilePart filePart : fileParts) {
44 objects.add(new FilePartObject("file", filePart.isFormField(), filePart.getName(), filePart.getContentType(), filePart.getValue()));
45 }
46 return new FilePartObjects(objects);
47 }
48
49
50 @POST
51 @Path("fileName")
52 @InterceptorChain(MessageInterceptor.class)
53 public Message returnFileName(@MultipartFormParam("file") FilePart filePart) {
54 return new Message(filePart.getName());
55 }
56
57 public static class SmallMultipartConfig implements MultipartConfig {
58 public long getMaxFileSize() {
59 return 10;
60 }
61
62 public long getMaxSize() {
63 return 1000;
64 }
65 }
66
67 }