1
package org.apache.maven.wagon.providers.http;
4
* Licensed to the Apache Software Foundation (ASF) under one
5
* or more contributor license agreements. See the NOTICE file
6
* distributed with this work for additional information
7
* regarding copyright ownership. The ASF licenses this file
8
* to you under the Apache License, Version 2.0 (the
9
* "License"); you may not use this file except in compliance
10
* with the License. You may obtain a copy of the License at
12
* http://www.apache.org/licenses/LICENSE-2.0
14
* Unless required by applicable law or agreed to in writing,
15
* software distributed under the License is distributed on an
16
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17
* KIND, either express or implied. See the License for the
18
* specific language governing permissions and limitations
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.http4.AbstractHttpClientWagon;
30
import org.apache.maven.wagon.shared.http4.HtmlFileListParser;
32
import java.io.IOException;
33
import java.io.InputStream;
34
import java.util.List;
37
* @author <a href="michal.maczka@dimatics.com">Michal Maczka</a>
38
* @version $Id: HttpWagon.java 1208429 2011-11-30 13:54:26Z olamy $
40
public class HttpWagon
41
extends AbstractHttpClientWagon
43
public List<String> getFileList( String destinationDirectory )
44
throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
46
if ( destinationDirectory.length() > 0 && !destinationDirectory.endsWith( "/" ) )
48
destinationDirectory += "/";
51
String url = getRepository().getUrl() + "/" + destinationDirectory;
53
HttpGet getMethod = new HttpGet( url );
58
HttpResponse response = execute( getMethod );
59
int statusCode = response.getStatusLine().getStatusCode();
61
fireTransferDebug( url + " - Status code: " + statusCode );
63
// TODO [BP]: according to httpclient docs, really should swallow the output on error. verify if that is required
66
case HttpStatus.SC_OK:
70
throw new TransferFailedException( "Failed to transfer file: " );
72
case HttpStatus.SC_FORBIDDEN:
73
throw new AuthorizationException( "Access denied to: " + url );
75
case HttpStatus.SC_UNAUTHORIZED:
76
throw new AuthorizationException( "Not authorized." );
78
case HttpStatus.SC_PROXY_AUTHENTICATION_REQUIRED:
79
throw new AuthorizationException( "Not authorized by proxy." );
81
case HttpStatus.SC_NOT_FOUND:
82
throw new ResourceDoesNotExistException( "File: " + url + " does not exist" );
84
//add more entries here
86
throw new TransferFailedException(
87
"Failed to transfer file: " + url + ". Return code is: " + statusCode );
90
InputStream is = response.getEntity().getContent();
92
return HtmlFileListParser.parseFileList( url, is );
94
catch ( IOException e )
96
throw new TransferFailedException( "Could not read response body.", e );
98
catch ( HttpException e )
100
throw new TransferFailedException( "Could not read response body.", e );