From 93abba8232d5cbba1339fceb6b0b47449efa1df3 Mon Sep 17 00:00:00 2001 From: Sebastian Kaspari Date: Sun, 14 Mar 2010 22:54:41 +0100 Subject: [PATCH] Implemented sending files via DCC: /dcc SEND --- src/org/yaaic/command/CommandParser.java | 2 + src/org/yaaic/command/handler/DCCHandler.java | 79 +++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 src/org/yaaic/command/handler/DCCHandler.java diff --git a/src/org/yaaic/command/CommandParser.java b/src/org/yaaic/command/CommandParser.java index eb15b08..6d59fbb 100644 --- a/src/org/yaaic/command/CommandParser.java +++ b/src/org/yaaic/command/CommandParser.java @@ -23,6 +23,7 @@ package org.yaaic.command; import java.util.HashMap; import org.yaaic.command.handler.CloseHandler; +import org.yaaic.command.handler.DCCHandler; import org.yaaic.command.handler.DeopHandler; import org.yaaic.command.handler.DevoiceHandler; import org.yaaic.command.handler.EchoHandler; @@ -83,6 +84,7 @@ public class CommandParser commands.put("part", new PartHandler()); commands.put("close", new CloseHandler()); commands.put("notice", new NoticeHandler()); + commands.put("dcc", new DCCHandler()); // Aliases commands.put("j", commands.get("join")); diff --git a/src/org/yaaic/command/handler/DCCHandler.java b/src/org/yaaic/command/handler/DCCHandler.java new file mode 100644 index 0000000..2228769 --- /dev/null +++ b/src/org/yaaic/command/handler/DCCHandler.java @@ -0,0 +1,79 @@ +/* +Yaaic - Yet Another Android IRC Client + +Copyright 2009-2010 Sebastian Kaspari + +This file is part of Yaaic. + +Yaaic is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Yaaic is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Yaaic. If not, see . +*/ +package org.yaaic.command.handler; + +import java.io.File; + +import org.yaaic.command.BaseHandler; +import org.yaaic.exception.CommandException; +import org.yaaic.irc.IRCService; +import org.yaaic.model.Broadcast; +import org.yaaic.model.Conversation; +import org.yaaic.model.Message; +import org.yaaic.model.Server; + +/** + * Command: /dcc SEND + * + * Send a file to a user + * + * @author Sebastian Kaspari + */ +public class DCCHandler extends BaseHandler +{ + /** + * Execute /dcc + */ + @Override + public void execute(String[] params, Server server, Conversation conversation, IRCService service) throws CommandException + { + if (params.length == 4) { + if (!params[1].equalsIgnoreCase("SEND")) { + throw new CommandException("Currently only SEND is allowed"); + } + File file = new File(params[3]); + if (!file.exists()) { + throw new CommandException("File does not exist: " + params[3]); + } + + service.getConnection(server.getId()).dccSendFile(file, params[2], 60000); + + Message message = new Message("Waiting for " + params[2] + " to accept the file transfer"); + message.setColor(Message.COLOR_GREY); + conversation.addMessage(message); + + service.sendBroadcast( + Broadcast.createConversationIntent(Broadcast.CONVERSATION_MESSAGE, server.getId(), conversation.getName()) + ); + } else { + throw new CommandException("Invalid number of params"); + } + } + + /** + * Usage of /dcc + */ + @Override + public String getUsage() + { + return "/dcc SEND "; + } +}