package com.limegroup.gnutella.uploader; import org.limewire.core.api.browse.server.BrowseTracker; 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.ResponseFactory; import com.limegroup.gnutella.messages.OutgoingQueryReplyFactory; import com.limegroup.gnutella.uploader.authentication.HttpRequestFileViewProvider; @Singleton public class BrowseRequestHandlerFactory { private final HTTPUploadSessionManager sessionManager; private final Provider<ResponseFactory> responseFactory; private final OutgoingQueryReplyFactory outgoingQueryReplyFactory; private final BrowseTracker tracker; @Inject public BrowseRequestHandlerFactory(HTTPUploadSessionManager sessionManager, Provider<ResponseFactory> responseFactory, OutgoingQueryReplyFactory outgoingQueryReplyFactory, BrowseTracker tracker) { this.sessionManager = sessionManager; this.responseFactory = responseFactory; this.outgoingQueryReplyFactory = outgoingQueryReplyFactory; this.tracker = tracker; } public BrowseRequestHandler createBrowseRequestHandler(HttpRequestFileViewProvider browseRequestFileListProvider, boolean requiresAuthentication) { if(!requiresAuthentication) { return new BrowseRequestHandler(sessionManager, responseFactory, outgoingQueryReplyFactory, browseRequestFileListProvider, tracker); } else { return new ProtectedBrowseRequestHandler(sessionManager, responseFactory, outgoingQueryReplyFactory, browseRequestFileListProvider); } } @RequiresAuthentication class ProtectedBrowseRequestHandler extends BrowseRequestHandler { ProtectedBrowseRequestHandler(HTTPUploadSessionManager sessionManager, Provider<ResponseFactory> responseFactory, OutgoingQueryReplyFactory outgoingQueryReplyFactory, HttpRequestFileViewProvider browseRequestFileListProvider) { super(sessionManager, responseFactory, outgoingQueryReplyFactory, browseRequestFileListProvider, tracker); } } }