package com.limegroup.gnutella.http; import java.io.IOException; import org.apache.http.Header; import org.apache.http.HttpException; import org.apache.http.protocol.HttpContext; import org.limewire.http.HeaderInterceptor; import com.limegroup.gnutella.PushEndpoint; import com.limegroup.gnutella.PushEndpointFactory; import com.limegroup.gnutella.uploader.HTTPUploader; /** * Collects the push endpoint information from an FWT-Node header and sets it on * an {@link HTTPUploader}. */ public class FWNodeInfoInterceptor implements HeaderInterceptor { private final HTTPUploader uploader; private final PushEndpointFactory pushEndpointFactory; public FWNodeInfoInterceptor(HTTPUploader uploader, PushEndpointFactory pushEndpointFactory) { this.uploader = uploader; this.pushEndpointFactory = pushEndpointFactory; } public void process(Header header, HttpContext context) throws HttpException, IOException { readPushEndPoint(header); } void readPushEndPoint(Header header) { if (HTTPHeaderName.FW_NODE_INFO.matches(header)) { try { PushEndpoint pushEndpoint = pushEndpointFactory.createPushEndpoint(header.getValue()); uploader.setPushEndpoint(pushEndpoint); uploader.setBrowseHostEnabled(true); } catch (IOException e) { } } } }