1 package org.apache.archiva.webdav.util;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 import org.apache.archiva.security.common.ArchivaRoleConstants;
24 import org.apache.commons.lang.StringUtils;
25
26 import java.util.ArrayList;
27 import java.util.List;
28 import java.util.Locale;
29
30
31
32
33
34 public class WebdavMethodUtil
35 {
36 private static final List<String> READ_METHODS;
37
38 static
39 {
40 READ_METHODS = new ArrayList<>( 5 );
41 READ_METHODS.add( "HEAD" );
42 READ_METHODS.add( "GET" );
43 READ_METHODS.add( "PROPFIND" );
44 READ_METHODS.add( "OPTIONS" );
45 READ_METHODS.add( "REPORT" );
46 }
47
48 public static String getMethodPermission( String method )
49 {
50 if ( StringUtils.isBlank( method ) )
51 {
52 throw new IllegalArgumentException( "WebDAV method is empty" );
53 }
54 if ( READ_METHODS.contains( method.toUpperCase( Locale.US ) ) )
55 {
56 return ArchivaRoleConstants.OPERATION_REPOSITORY_ACCESS;
57 }
58 else if ( "DELETE".equals( method.toUpperCase( Locale.US ) ) )
59 {
60 return ArchivaRoleConstants.OPERATION_REPOSITORY_DELETE;
61 }
62 else
63 {
64 return ArchivaRoleConstants.OPERATION_REPOSITORY_UPLOAD;
65 }
66 }
67
68 public static boolean isReadMethod( String method )
69 {
70 if ( StringUtils.isBlank( method ) )
71 {
72 throw new IllegalArgumentException( "WebDAV method is empty" );
73 }
74 return READ_METHODS.contains( method.toUpperCase( Locale.US ) );
75 }
76 }