package eu.dnetlib.contract.utils;

import java.io.IOException;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 * Base64 coding utilites.
 * @author mhorst
 *
 */
public class Base64Utils {

	/**
	 * Encodes resultSetEPR. 
	 * Returns base64 format of resultSetEPR.
	 * @param resultSetEPR
	 * @return base64 format of resultSetEPR
	 */
	public static String encode(String resultSetEPR) {
		BASE64Encoder encoder = new BASE64Encoder();
		return encoder.encode(resultSetEPR.getBytes());
	}
	
	/**
	 * Decodes resultSetEPRBase64Enc. 
	 * Returns resultSetEPR decoded from base64 format.
	 * @param resultSetEPRBase64Enc base64 format of resultSetEPR
	 * @return resultSetEPR
	 */
	public static String decode(String resultSetEPRBase64Enc) {
		if (resultSetEPRBase64Enc==null)
			return null;
		BASE64Decoder decoder = new BASE64Decoder();
		try {
			return new String(decoder.decodeBuffer(resultSetEPRBase64Enc));
		} catch (IOException e) {
			throw new RuntimeException("Unexpected exception occured when parsing resultSetEPRBase64Enc: " 
					+ resultSetEPRBase64Enc, e);
		}
	}
	
}
