From 201341daa514e5c54e832d2372c65fd65bcb6ebb Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Tue, 16 Apr 2013 20:01:04 +0200 Subject: [PATCH] Move CTCP handling into its own method. --- .../java/net/pterodactylus/irc/Connection.java | 56 +++++++++++++--------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/src/main/java/net/pterodactylus/irc/Connection.java b/src/main/java/net/pterodactylus/irc/Connection.java index 58e5365..bf6065f 100644 --- a/src/main/java/net/pterodactylus/irc/Connection.java +++ b/src/main/java/net/pterodactylus/irc/Connection.java @@ -332,28 +332,7 @@ public class Connection extends AbstractExecutionThreadService implements Servic String message = parameters.get(1); if (message.startsWith("\u0001") && message.endsWith("\u0001")) { /* CTCP! */ - String[] messageWords = message.substring(1, message.length() - 1).split(" +"); - String ctcpCommand = messageWords[0]; - if (ctcpCommand.equalsIgnoreCase("DCC")) { - if (messageWords[1].equalsIgnoreCase("SEND")) { - Optional inetAddress = parseInetAddress(messageWords[3]); - Optional port = Optional.fromNullable(Ints.tryParse(messageWords[4])); - long fileSize = Optional.fromNullable(Longs.tryParse(messageWords[5])).or(-1L); - if (inetAddress.isPresent() && port.isPresent()) { - eventBus.post(new DccSendReceived(this, reply.source().get(), messageWords[2], inetAddress.get(), port.get(), fileSize)); - } else { - logger.warning(String.format("Received malformed DCC SEND: “%s”", message)); - } - } else if (messageWords[1].equalsIgnoreCase("ACCEPT")) { - Optional port = Optional.fromNullable(Ints.tryParse(messageWords[3])); - long position = Optional.fromNullable(Longs.tryParse(messageWords[4])).or(-1L); - if (port.isPresent()) { - eventBus.post(new DccAcceptReceived(this, reply.source().get(), messageWords[2], port.get(), position)); - } else { - logger.warning(String.format("Received malformed DCC ACCEPT: “%s”", message)); - } - } - } + handleCtcp(reply.source().get(), message); } else if (!channelTypes.contains(recipient.charAt(0))) { eventBus.post(new PrivateMessageReceived(this, reply.source().get(), message)); } else { @@ -488,6 +467,39 @@ public class Connection extends AbstractExecutionThreadService implements Servic // /** + * Handles a CTCP message. + * + * @param client + * The client sending the message + * @param message + * The message + */ + private void handleCtcp(Source client, String message) { + String[] messageWords = message.substring(1, message.length() - 1).split(" +"); + String ctcpCommand = messageWords[0]; + if (ctcpCommand.equalsIgnoreCase("DCC")) { + if (messageWords[1].equalsIgnoreCase("SEND")) { + Optional inetAddress = parseInetAddress(messageWords[3]); + Optional port = Optional.fromNullable(Ints.tryParse(messageWords[4])); + long fileSize = Optional.fromNullable(Longs.tryParse(messageWords[5])).or(-1L); + if (inetAddress.isPresent() && port.isPresent()) { + eventBus.post(new DccSendReceived(this, client, messageWords[2], inetAddress.get(), port.get(), fileSize)); + } else { + logger.warning(String.format("Received malformed DCC SEND: “%s”", message)); + } + } else if (messageWords[1].equalsIgnoreCase("ACCEPT")) { + Optional port = Optional.fromNullable(Ints.tryParse(messageWords[3])); + long position = Optional.fromNullable(Longs.tryParse(messageWords[4])).or(-1L); + if (port.isPresent()) { + eventBus.post(new DccAcceptReceived(this, client, messageWords[2], port.get(), position)); + } else { + logger.warning(String.format("Received malformed DCC ACCEPT: “%s”", message)); + } + } + } + } + + /** * Returns an item from the list, or {@link Optional#absent()} if the list is * shorter than required for the given index. * -- 2.7.4