1 package org.apache.maven.wagon.providers.http;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.http.HttpException;
23 import org.apache.http.HttpResponse;
24 import org.apache.http.HttpStatus;
25 import org.apache.http.client.methods.HttpGet;
26 import org.apache.maven.wagon.ResourceDoesNotExistException;
27 import org.apache.maven.wagon.TransferFailedException;
28 import org.apache.maven.wagon.authorization.AuthorizationException;
29 import org.apache.maven.wagon.shared.http.AbstractHttpClientWagon;
30 import org.apache.maven.wagon.shared.http.HtmlFileListParser;
31
32 import java.io.IOException;
33 import java.io.InputStream;
34 import java.util.List;
35
36
37
38
39
40 public class HttpWagon
41 extends AbstractHttpClientWagon
42 {
43 public List<String> getFileList( String destinationDirectory )
44 throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
45 {
46 if ( destinationDirectory.length() > 0 && !destinationDirectory.endsWith( "/" ) )
47 {
48 destinationDirectory += "/";
49 }
50
51 String url = getRepository().getUrl() + "/" + destinationDirectory;
52
53 HttpGet getMethod = new HttpGet( url );
54
55 try
56 {
57
58 HttpResponse response = execute( getMethod );
59 int statusCode = response.getStatusLine().getStatusCode();
60
61 fireTransferDebug( url + " - Status code: " + statusCode );
62
63
64 switch ( statusCode )
65 {
66 case HttpStatus.SC_OK:
67 break;
68
69 case SC_NULL:
70 throw new TransferFailedException( "Failed to transfer file: " );
71
72 case HttpStatus.SC_FORBIDDEN:
73 throw new AuthorizationException( "Access denied to: " + url );
74
75 case HttpStatus.SC_UNAUTHORIZED:
76 throw new AuthorizationException( "Not authorized." );
77
78 case HttpStatus.SC_PROXY_AUTHENTICATION_REQUIRED:
79 throw new AuthorizationException( "Not authorized by proxy." );
80
81 case HttpStatus.SC_NOT_FOUND:
82 throw new ResourceDoesNotExistException( "File: " + url + " does not exist" );
83
84
85 default:
86 throw new TransferFailedException(
87 "Failed to transfer file: " + url + ". Return code is: " + statusCode );
88 }
89
90 InputStream is = response.getEntity().getContent();
91
92 return HtmlFileListParser.parseFileList( url, is );
93 }
94 catch ( IOException e )
95 {
96 throw new TransferFailedException( "Could not read response body.", e );
97 }
98 catch ( HttpException e )
99 {
100 throw new TransferFailedException( "Could not read response body.", e );
101 }
102 finally
103 {
104 getMethod.abort();
105 }
106 }
107 }