package egovframework.com.cmm.captcha;
import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
import nl.captcha.Captcha;
import nl.captcha.audio.AudioCaptcha;
import nl.captcha.audio.producer.VoiceProducer;
import nl.captcha.servlet.CaptchaServletUtil;

public class AudioCaptCha {
	public void getAudioCaptCha(HttpServletRequest req, HttpServletResponse resp, String answer) throws IOException
    {
        HttpSession session = req.getSession();
        Captcha captcha = (Captcha) session.getAttribute(Captcha.NAME);
        String getAnswer = answer;
        AudioCaptcha audiocaptcha = null;
        if ( getAnswer == null || "".equals(getAnswer) ) getAnswer = captcha.getAnswer();
        
        String lan = req.getParameter("lan");
        if( lan != null && "kor".equals(lan)) {
            VoiceProducer vProd = new SetKorVoiceProducer(); //한글 음성을 생성해주는 객체 생성
            audiocaptcha = new AudioCaptcha.Builder()
            .addAnswer(new SetTextProducer(getAnswer))
            .addVoice(vProd) //한글음성생성기를 AudioCaptcha에 적용
            .addNoise()
            .build();
        } else {            
            audiocaptcha = new AudioCaptcha.Builder()
            .addAnswer(new SetTextProducer(getAnswer))
            .addNoise()
            .build();
        }
                      
        String agent = req.getParameter("agent"); //브라우저마다 응답을 달리해야할경우 이용.
        CaptchaServletUtil.writeAudio(resp, audiocaptcha.getChallenge());
    }
}
