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 {
23 @POST
24 @Path("single")
25 public FilePartObject showMultipartSingle(@MultipartFormParam("file")FilePart filePart)
26 {
27 return new FilePartObject("file", filePart.isFormField(), filePart.getName(), filePart.getContentType(), filePart.getValue());
28 }
29
30 @POST
31 @Path("multiple")
32 public FilePartObjects showMultipartMultiple(@MultipartFormParam("file") Collection<FilePart> fileParts)
33 {
34 Collection<FilePartObject> objects = new ArrayList<FilePartObject>();
35 for (FilePart filePart : fileParts)
36 {
37 objects.add(new FilePartObject("file", filePart.isFormField(), filePart.getName(), filePart.getContentType(), filePart.getValue()));
38 }
39 return new FilePartObjects(objects);
40 }
41
42 @POST
43 @Path("config")
44 @MultipartConfigClass(MultipartResource.SmallMultipartConfig.class)
45 public FilePartObjects showMultipartConfig(@MultipartFormParam("file") Collection<FilePart> fileParts)
46 {
47 Collection<FilePartObject> objects = new ArrayList<FilePartObject>();
48 for (FilePart filePart : fileParts)
49 {
50 objects.add(new FilePartObject("file", filePart.isFormField(), filePart.getName(), filePart.getContentType(), filePart.getValue()));
51 }
52 return new FilePartObjects(objects);
53 }
54
55
56 @POST
57 @Path("fileName")
58 @InterceptorChain(MessageInterceptor.class)
59 public Message returnFileName(@MultipartFormParam("file") FilePart filePart)
60 {
61 return new Message(filePart.getName());
62 }
63
64 public static class SmallMultipartConfig implements MultipartConfig
65 {
66 public long getMaxFileSize()
67 {
68 return 10;
69 }
70
71 public long getMaxSize()
72 {
73 return 1000;
74 }
75 }
76
77 }