package com.limegroup.gnutella.uploader;
import org.limewire.http.auth.RequiresAuthentication;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
import com.limegroup.gnutella.DownloadManager;
import com.limegroup.gnutella.PushEndpointFactory;
import com.limegroup.gnutella.altlocs.AltLocManager;
import com.limegroup.gnutella.altlocs.AlternateLocationFactory;
import com.limegroup.gnutella.library.CreationTimeCache;
import com.limegroup.gnutella.library.Library;
import com.limegroup.gnutella.tigertree.HashTreeCache;
import com.limegroup.gnutella.tigertree.HashTreeWriteHandlerFactory;
import com.limegroup.gnutella.uploader.authentication.HttpRequestFileViewProvider;
@Singleton
class FileRequestHandlerFactoryImpl implements FileRequestHandlerFactory {
private final HTTPUploadSessionManager sessionManager;
private final Library library;
private final HTTPHeaderUtils httpHeaderUtils;
private final HttpRequestHandlerFactory httpRequestHandlerFactory;
private final Provider<CreationTimeCache> creationTimeCache;
private final FileResponseEntityFactory fileResponseEntityFactory;
private final AltLocManager altLocManager;
private final AlternateLocationFactory alternateLocationFactory;
private final Provider<DownloadManager> downloadManager;
private final Provider<HashTreeCache> tigerTreeCache;
private final PushEndpointFactory pushEndpointFactory;
private final HashTreeWriteHandlerFactory tigerWriteHandlerFactory;
@Inject
public FileRequestHandlerFactoryImpl(HTTPUploadSessionManager sessionManager, Library library,
HTTPHeaderUtils httpHeaderUtils, HttpRequestHandlerFactory httpRequestHandlerFactory,
Provider<CreationTimeCache> creationTimeCache,
FileResponseEntityFactory fileResponseEntityFactory, AltLocManager altLocManager,
AlternateLocationFactory alternateLocationFactory,
Provider<DownloadManager> downloadManager, Provider<HashTreeCache> tigerTreeCache,
PushEndpointFactory pushEndpointFactory,
HashTreeWriteHandlerFactory tigerWriteHandlerFactory) {
this.sessionManager = sessionManager;
this.library = library;
this.httpHeaderUtils = httpHeaderUtils;
this.httpRequestHandlerFactory = httpRequestHandlerFactory;
this.creationTimeCache = creationTimeCache;
this.fileResponseEntityFactory = fileResponseEntityFactory;
this.altLocManager = altLocManager;
this.alternateLocationFactory = alternateLocationFactory;
this.downloadManager = downloadManager;
this.tigerTreeCache = tigerTreeCache;
this.pushEndpointFactory = pushEndpointFactory;
this.tigerWriteHandlerFactory = tigerWriteHandlerFactory;
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.uploader.FileRequestHandlerFactory#createFileRequestHandler(com.limegroup.gnutella.uploader.authentication.HttpRequestFileListProvider, boolean)
*/
public FileRequestHandler createFileRequestHandler(HttpRequestFileViewProvider fileListProvider, boolean requiresAuthentication) {
if(!requiresAuthentication) {
return new FileRequestHandler(sessionManager, library, httpHeaderUtils,
httpRequestHandlerFactory, creationTimeCache, fileResponseEntityFactory,
altLocManager, alternateLocationFactory, downloadManager, tigerTreeCache,
pushEndpointFactory, tigerWriteHandlerFactory, fileListProvider);
} else {
return new ProtectedFileRequestHandler(sessionManager, library, httpHeaderUtils,
httpRequestHandlerFactory, creationTimeCache, fileResponseEntityFactory,
altLocManager, alternateLocationFactory, downloadManager, tigerTreeCache,
pushEndpointFactory, tigerWriteHandlerFactory, fileListProvider);
}
}
@RequiresAuthentication
static class ProtectedFileRequestHandler extends FileRequestHandler {
ProtectedFileRequestHandler(HTTPUploadSessionManager sessionManager, Library library, HTTPHeaderUtils httpHeaderUtils, HttpRequestHandlerFactory httpRequestHandlerFactory, Provider<CreationTimeCache> creationTimeCache, FileResponseEntityFactory fileResponseEntityFactory, AltLocManager altLocManager, AlternateLocationFactory alternateLocationFactory, Provider<DownloadManager> downloadManager, Provider<HashTreeCache> tigerTreeCache, PushEndpointFactory pushEndpointFactory, HashTreeWriteHandlerFactory tigerWriteHandlerFactory, HttpRequestFileViewProvider fileListProvider) {
super(sessionManager, library, httpHeaderUtils, httpRequestHandlerFactory, creationTimeCache, fileResponseEntityFactory, altLocManager, alternateLocationFactory, downloadManager, tigerTreeCache, pushEndpointFactory, tigerWriteHandlerFactory, fileListProvider);
}
}
}