summaryrefslogtreecommitdiffstats
path: root/EssentialsUpdate/src/f00f/net/irc/martyr/replies/ChannelCreationReply.java
diff options
context:
space:
mode:
Diffstat (limited to 'EssentialsUpdate/src/f00f/net/irc/martyr/replies/ChannelCreationReply.java')
-rw-r--r--EssentialsUpdate/src/f00f/net/irc/martyr/replies/ChannelCreationReply.java78
1 files changed, 78 insertions, 0 deletions
diff --git a/EssentialsUpdate/src/f00f/net/irc/martyr/replies/ChannelCreationReply.java b/EssentialsUpdate/src/f00f/net/irc/martyr/replies/ChannelCreationReply.java
new file mode 100644
index 000000000..2dd89e1cd
--- /dev/null
+++ b/EssentialsUpdate/src/f00f/net/irc/martyr/replies/ChannelCreationReply.java
@@ -0,0 +1,78 @@
+package f00f.net.irc.martyr.replies;
+
+import java.util.Date;
+import java.util.StringTokenizer;
+
+import f00f.net.irc.martyr.InCommand;
+import f00f.net.irc.martyr.clientstate.Channel;
+import f00f.net.irc.martyr.clientstate.ClientState;
+
+/**
+ * ChannelCreationReply sets the creation time of the channel. It is sent
+ * automatically on a MODE discovery request.
+ */
+public class ChannelCreationReply extends GenericReply
+{
+ private String channelName;
+ private Date date;
+
+ /** For use as a factory. */
+ public ChannelCreationReply()
+ {
+ }
+
+ public ChannelCreationReply( String channelName, Date date )
+ {
+ this.channelName = channelName;
+ this.date = date;
+ }
+
+ public String getIrcIdentifier()
+ {
+ return "329";
+ }
+
+ /**
+ * This is a factory that passes the command off to a
+ * ChannelModeCommand.
+ */
+ public InCommand parse( String prefix, String identifier, String params )
+ {
+ StringTokenizer tokens = new StringTokenizer( params );
+
+ // Our nick. We don't need that, I think.
+ tokens.nextToken();
+
+ // The channel.
+ String chan = tokens.nextToken();
+
+ // The date.
+ Date date;
+ try
+ {
+ date = new Date( Long.parseLong( tokens.nextToken() ) * 1000 );
+ }
+ catch( NumberFormatException nfe )
+ {
+ // riiiight...
+ date = new Date(0);
+ }
+
+ return new ChannelCreationReply( chan, date );
+ }
+
+ /**
+ * This should, theoretically, never be called, because this command is
+ * only ever used as a factory.
+ */
+ public boolean updateClientState( ClientState state )
+ {
+ Channel channel = state.getChannel( channelName );
+ channel.setCreationDate( date );
+ return true;
+ }
+}
+
+
+
+