package org.limewire.facebook.service.livemessage; import java.util.HashMap; import java.util.Map; import org.json.JSONException; import org.json.JSONObject; import org.limewire.facebook.service.FacebookFriendConnection; import org.limewire.friend.api.FileMetaData; import org.limewire.friend.api.FriendException; import org.limewire.friend.api.FriendPresence; import org.limewire.friend.api.feature.FeatureTransport; import com.google.inject.Inject; import com.google.inject.assistedinject.Assisted; public class FileOfferHandler implements LiveMessageHandler, FeatureTransport<FileMetaData>{ private static final String TYPE = "file-offer"; private final FacebookFriendConnection connection; private final Handler<FileMetaData> fileMetaDataHandler; @Inject FileOfferHandler(@Assisted FacebookFriendConnection connection, FeatureTransport.Handler<FileMetaData> fileMetaDataHandler) { this.connection = connection; this.fileMetaDataHandler = fileMetaDataHandler; } @Override @Inject public void register(LiveMessageHandlerRegistry registry) { registry.register(TYPE, this); } @Override public void handle(String messageType, JSONObject message) throws JSONException { String from = message.optString("from", null); FacebookFileMetaData fileMetaData = new FacebookFileMetaData(message); fileMetaDataHandler.featureReceived(from, fileMetaData); } @Override public void sendFeature(FriendPresence presence, FileMetaData localFeature) throws FriendException { Map<String, Object> messageMap = new HashMap<String, Object>(); messageMap.putAll(localFeature.getSerializableMap()); connection.sendLiveMessage(presence, TYPE, messageMap); } }