Advertisement
MegaLoler

IRC Message Parser Class

May 7th, 2012
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.64 KB | None | 0 0
  1. package irc;
  2.  
  3. import java.util.ArrayList;
  4.  
  5. public class IRCMessage{
  6.     public boolean valid;
  7.    
  8.     public String message;
  9.    
  10.     public String prefix;
  11.     public String command;
  12.     public String parameter;
  13.    
  14.     public String servername;
  15.     public String identification;
  16.    
  17.     public String nick;
  18.     public String user;
  19.     public String host;
  20.    
  21.     public String[] parameters;
  22.     public String trailing;
  23.    
  24.     public IRCMessage(String message){
  25.         message = message.trim();
  26.         this.message = message;
  27.        
  28.         valid = false;
  29.        
  30.         prefix = null;
  31.         command = null;
  32.         parameter = null;
  33.        
  34.         servername = null;
  35.         identification = null;
  36.        
  37.         nick = null;
  38.         user = null;
  39.         host = null;
  40.        
  41.         parameters = null;
  42.         trailing = null;
  43.        
  44.         try{
  45.             if(message.length() > 0){
  46.                 String[] parts;
  47.                 if(message.charAt(0) == ':'){
  48.                     parts = message.split(" ", 2);
  49.                     prefix = parts[0].substring(1);
  50.                     message = parts[1].trim();
  51.                    
  52.                     if(prefix.indexOf("!") != -1){
  53.                         identification = prefix;
  54.                         nick = identification;
  55.                         if(identification.indexOf("@") != -1){
  56.                             parts = nick.split("@", 2);
  57.                             nick = parts[0];
  58.                             host = parts[1];
  59.                         }
  60.                         if(nick.indexOf("!") != -1){
  61.                             parts = nick.split("!", 2);
  62.                             nick = parts[0];
  63.                             user = parts[1];
  64.                         }
  65.                     }else{
  66.                         servername = prefix;
  67.                     }
  68.                 }
  69.                 command = message.substring(0, message.indexOf(" "));
  70.                 parameter = message.substring(command.length());
  71.                 if(parameter.indexOf(":") != -1){
  72.                     parts = parameter.split(":", 2);
  73.                     parameter = parts[0];
  74.                     trailing = parts[1];
  75.                 }
  76.                 parameter = parameter.trim();
  77.                 parameters = parameter.split(" ");
  78.                 ArrayList<String> pars = new ArrayList<String>();
  79.                 int i;
  80.                 for(i = 0 ; i < parameters.length; i++){
  81.                     if(parameters[i].length() > 0){
  82.                         pars.add(parameters[i]);
  83.                     }
  84.                 }
  85.                 parameters = new String[pars.size()];
  86.                 for(i = 0 ; i < pars.size(); i++){
  87.                     parameters[i] = pars.get(i);
  88.                 }
  89.                 valid = true;
  90.             }
  91.         }catch(Exception exception){}
  92.     }
  93.    
  94.     public String format(){
  95.         if(valid){
  96.             String formatted = "";
  97.             if(prefix != null){
  98.                 formatted += ":";
  99.                 if(servername != null){
  100.                     formatted += servername;
  101.                 }else{
  102.                     formatted += nick;
  103.                     if(user != null){
  104.                         formatted += "!" + user;
  105.                     }
  106.                     if(host != null){
  107.                         formatted += "!" + host;
  108.                     }
  109.                 }
  110.                 formatted += " ";
  111.             }
  112.             formatted += command;
  113.             int i;
  114.             for(i = 0; i < parameters.length; i++){
  115.                 formatted += " " + parameters[i];
  116.             }
  117.             if(trailing != null){
  118.                 formatted += " :" + trailing;
  119.             }
  120.             return formatted;
  121.         }else{
  122.             return null;
  123.         }
  124.     }
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement