Move CTCP handling into its own method.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Tue, 16 Apr 2013 18:01:04 +0000 (20:01 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Tue, 16 Apr 2013 18:01:04 +0000 (20:01 +0200)
src/main/java/net/pterodactylus/irc/Connection.java

index 58e5365..bf6065f 100644 (file)
@@ -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> inetAddress = parseInetAddress(messageWords[3]);
-                                                               Optional<Integer> 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<Integer> 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> inetAddress = parseInetAddress(messageWords[3]);
+                               Optional<Integer> 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<Integer> 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.
         *