package org.limewire.core.impl.friend;
import org.limewire.core.impl.xmpp.FriendFileViewProvider;
import org.limewire.i18n.I18nMarker;
import org.limewire.inject.EagerSingleton;
import org.limewire.lifecycle.Service;
import org.limewire.lifecycle.ServiceRegistry;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.limegroup.gnutella.HTTPAcceptor;
import com.limegroup.gnutella.uploader.HttpRequestHandlerFactory;
@EagerSingleton
public class CoreGlueFriendService implements Service {
private final Provider<HTTPAcceptor> httpAcceptor;
private final HttpRequestHandlerFactory httpRequestHandlerFactory;
private final Provider<FriendFileViewProvider> authenticatingBrowseFriendListProvider;
final static String FRIEND_BROWSE_PREFIX = "/friend/browse/";
final static String FRIEND_DOWNLOAD_PREFIX = "/friend/download/";
final static String FRIEND_BROWSE_PATTERN = FRIEND_BROWSE_PREFIX + "*";
final static String FRIEND_DOWNLOAD_PATTERN = FRIEND_DOWNLOAD_PREFIX + "*";
@Inject
public CoreGlueFriendService(Provider<HTTPAcceptor> httpAcceptor, HttpRequestHandlerFactory httpRequestHandlerFactory,
Provider<FriendFileViewProvider> authenticatingBrowseFriendListProvider) {
this.httpAcceptor = httpAcceptor;
this.httpRequestHandlerFactory = httpRequestHandlerFactory;
this.authenticatingBrowseFriendListProvider = authenticatingBrowseFriendListProvider;
}
@Inject
void register(ServiceRegistry registry) {
registry.register(this);
}
@Override
public String getServiceName() {
return I18nMarker.marktr("XMPP Service");
}
@Override
public void initialize() {
}
@Override
public void start() {
httpAcceptor.get().registerHandler(FRIEND_BROWSE_PATTERN, httpRequestHandlerFactory.createBrowseRequestHandler(authenticatingBrowseFriendListProvider.get(), true));
httpAcceptor.get().registerHandler(FRIEND_DOWNLOAD_PATTERN, httpRequestHandlerFactory.createFileRequestHandler(authenticatingBrowseFriendListProvider.get(), true));
}
@Override
public void stop() {
httpAcceptor.get().unregisterHandler(FRIEND_BROWSE_PATTERN);
httpAcceptor.get().unregisterHandler(FRIEND_DOWNLOAD_PATTERN);
}
}