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();
	}
	

}