Parser.java
package org.flasby.net.mail;
import static org.flasby.net.mail.SmtpEvent.PROTOCOL_FAULT;
import static org.flasby.net.mail.SmtpEvent.RESP_220;
import static org.flasby.net.mail.SmtpEvent.RESP_250;
import static org.flasby.net.mail.SmtpEvent.RESP_250_HYPHON;
import static org.flasby.net.mail.SmtpEvent.RESP_5xx;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
public class Parser {
// private final BufferedReader reader;
private final BufferedReader inputStream;
public Parser(BufferedInputStream inputStream) {
// reader = new BufferedReader( new InputStreamReader(dataInputStream));
this.inputStream = new BufferedReader(new InputStreamReader(inputStream, Charset.forName("UTF-8")));
}
private char[] buff = new char[4];
public SmtpEvent getNextEvent() throws IOException {
if ( inputStream.read(buff) != 4 ) {
return PROTOCOL_FAULT;
}
System.out.println("Got: "+new String(buff) );
switch ( new String( buff ) ) {
case "220 ": return RESP_220;
case "250 ": return RESP_250;
case "250-": return RESP_250_HYPHON;
}
if ( buff[0] == '5' ) return RESP_5xx;
return PROTOCOL_FAULT;
}
public String consumeToEol() throws IOException {
return inputStream.readLine();
}
}